fix: 回退迁移0010到原内容, 新增0013, 删除已应用迁移记录重新对齐
迁移 0010/0011 在首次 service 运行后被修改,导致 sqlx 校验和不匹配。 0010 回退到仅 ALTER COLUMN DROP NOT NULL(已幂等执行)。 新增 0013 处理全新数据库缺少 kind/entry 列的问题。 已通过 psql 删除 _sqlx_migrations 中的 0010/0011 记录, 下次 service 启动将重新应用(均为幂等操作)。
This commit is contained in:
@@ -1,18 +1,4 @@
|
||||
-- 修复 llm_usage 表兼容性:旧库有 iPet 遗留的 kind/entry 列 (NOT NULL),新库没有
|
||||
-- kind/entry 保留为兼容字段,新代码写入默认值 ("llm_call" / null)
|
||||
-- 1) 添加列(如果不存在)
|
||||
ALTER TABLE llm_usage ADD COLUMN IF NOT EXISTS kind TEXT;
|
||||
ALTER TABLE llm_usage ADD COLUMN IF NOT EXISTS entry JSONB;
|
||||
-- 2) 只在列存在且 NOT NULL 时解除约束
|
||||
DO $$
|
||||
BEGIN
|
||||
IF EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'llm_usage' AND column_name = 'kind' AND is_nullable = 'NO') THEN
|
||||
ALTER TABLE llm_usage ALTER COLUMN kind DROP NOT NULL;
|
||||
END IF;
|
||||
IF EXISTS (SELECT 1 FROM information_schema.columns
|
||||
WHERE table_name = 'llm_usage' AND column_name = 'entry' AND is_nullable = 'NO') THEN
|
||||
ALTER TABLE llm_usage ALTER COLUMN entry DROP NOT NULL;
|
||||
END IF;
|
||||
END;
|
||||
$$;
|
||||
-- 移除 llm_usage 表中旧 iPet 遗留列的 NOT NULL 约束
|
||||
-- kind/entry 是旧格式字段,新代码不使用它们
|
||||
ALTER TABLE llm_usage ALTER COLUMN kind DROP NOT NULL;
|
||||
ALTER TABLE llm_usage ALTER COLUMN entry DROP NOT NULL;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- 确保 llm_usage 表在全新数据库上也有 kind/entry 列(迁移 0010 仅解除了旧库的 NOT NULL)
|
||||
ALTER TABLE llm_usage ADD COLUMN IF NOT EXISTS kind TEXT;
|
||||
ALTER TABLE llm_usage ADD COLUMN IF NOT EXISTS entry JSONB;
|
||||
Reference in New Issue
Block a user