本目录包含了以下SQL迁移脚本文件:
migration_token_usage_count.sql - 完整的迁移脚本,包含所有数据库类型的语法和回滚操作add_token_usage_fields_mysql.sql - MySQL专用简化脚本add_token_usage_fields_sqlite.sql - SQLite专用简化脚本add_token_usage_fields_postgresql.sql - PostgreSQL专用简化脚本add_token_usage_count_fields.sql - 包含所有数据库语法的通用脚本| 字段名 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|
daily_usage_count |
INT/INTEGER | 0 | 今日使用次数,每日自动重置 |
total_usage_count |
INT/INTEGER | 0 | 总使用次数,只增不减 |
last_usage_date |
VARCHAR(10)/TEXT | '' | 最后使用日期(YYYY-MM-DD格式) |
如果您的项目使用了GORM自动迁移,则无需手动执行SQL脚本:
# 启动程序时会自动迁移
go run main.go
如果需要手动执行SQL迁移,请根据您的数据库类型选择对应脚本:
mysql -u root -p your_database < add_token_usage_fields_mysql.sql
sqlite3 your_database.db < add_token_usage_fields_sqlite.sql
psql -U username -d your_database -f add_token_usage_fields_postgresql.sql
DESCRIBE tokens;
-- 或
SHOW COLUMNS FROM tokens LIKE '%usage%';
PRAGMA table_info(tokens);
\d tokens
-- 或
SELECT column_name, data_type, is_nullable, column_default
FROM information_schema.columns
WHERE table_name = 'tokens'
AND column_name LIKE '%usage%';
如果需要回滚迁移,请参考 migration_token_usage_count.sql 文件中的回滚部分,或执行以下SQL:
ALTER TABLE tokens DROP COLUMN daily_usage_count;
ALTER TABLE tokens DROP COLUMN total_usage_count;
ALTER TABLE tokens DROP COLUMN last_usage_date;
SQLite不支持DROP COLUMN,需要重建表:
-- 1. 创建临时表包含原有字段
CREATE TABLE tokens_temp AS
SELECT id, user_id, key, status, name, created_time, accessed_time,
expired_time, remain_quota, unlimited_quota, model_limits_enabled,
model_limits, allow_ips, used_quota, `group`, deleted_at
FROM tokens;
-- 2. 删除原表
DROP TABLE tokens;
-- 3. 重命名临时表
ALTER TABLE tokens_temp RENAME TO tokens;
-- 4. 重建索引和约束 (根据实际情况调整)
字段已存在错误
Duplicate column name 或 column already exists权限不足错误
Access denied 或 permission denied表不存在错误
Table doesn't exist-- 检查字段是否添加成功
SELECT COUNT(*) as field_count
FROM information_schema.columns
WHERE table_name = 'tokens'
AND column_name IN ('daily_usage_count', 'total_usage_count', 'last_usage_date');
-- 应该返回 3
如果在迁移过程中遇到问题: