fix(设置): 修复站点设置保存失败的问题
问题: 1. Setting.value 字段设置了 NotEmpty() 约束,导致保存空字符串值时验证失败 2. 数据库 settings 表缺少 key 字段的唯一约束,导致 ON CONFLICT 语句执行失败 修复: - 移除 ent/schema/setting.go 中 value 字段的 NotEmpty() 约束 - 新增迁移 015_fix_settings_unique_constraint.sql 添加缺失的唯一约束 - 添加3个回归测试确保空值保存功能正常 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
19
backend/migrations/015_fix_settings_unique_constraint.sql
Normal file
19
backend/migrations/015_fix_settings_unique_constraint.sql
Normal file
@@ -0,0 +1,19 @@
|
||||
-- 015_fix_settings_unique_constraint.sql
|
||||
-- 修复 settings 表 key 字段缺失的唯一约束
|
||||
-- 此约束是 ON CONFLICT ("key") DO UPDATE 语句所必需的
|
||||
|
||||
-- 检查并添加唯一约束(如果不存在)
|
||||
DO $$
|
||||
BEGIN
|
||||
-- 检查是否已存在唯一约束
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_constraint
|
||||
WHERE conrelid = 'settings'::regclass
|
||||
AND contype = 'u'
|
||||
AND conname = 'settings_key_key'
|
||||
) THEN
|
||||
-- 添加唯一约束
|
||||
ALTER TABLE settings ADD CONSTRAINT settings_key_key UNIQUE (key);
|
||||
END IF;
|
||||
END
|
||||
$$;
|
||||
Reference in New Issue
Block a user