fix: pg sql error #67

This commit is contained in:
engigu
2026-03-25 20:43:52 +08:00
parent e84a8f0d58
commit 6c8aba2327
4 changed files with 12 additions and 12 deletions
+2 -2
View File
@@ -33,7 +33,7 @@ func Migrate() error {
sig := getModelSignature(allModels) sig := getModelSignature(allModels)
if DB.Migrator().HasTable(&models.Setting{}) { if DB.Migrator().HasTable(&models.Setting{}) {
var sigSetting models.Setting var sigSetting models.Setting
res := DB.Where("section = ? AND `key` = ?", "system", "schema_signature").Limit(1).Find(&sigSetting) res := DB.Where(&models.Setting{Section: "system", Key: "schema_signature"}).Limit(1).Find(&sigSetting)
if res.RowsAffected > 0 && string(sigSetting.Value) == sig { if res.RowsAffected > 0 && string(sigSetting.Value) == sig {
logger.Info("[Database] 模型指纹一致,跳过自动表结构同步") logger.Info("[Database] 模型指纹一致,跳过自动表结构同步")
return nil return nil
@@ -54,7 +54,7 @@ func Migrate() error {
// 3. 更新指纹记录 // 3. 更新指纹记录
if DB.Migrator().HasTable(&models.Setting{}) { if DB.Migrator().HasTable(&models.Setting{}) {
var sigSetting models.Setting var sigSetting models.Setting
res := DB.Where("section = ? AND `key` = ?", "system", "schema_signature").Limit(1).Find(&sigSetting) res := DB.Where(&models.Setting{Section: "system", Key: "schema_signature"}).Limit(1).Find(&sigSetting)
if res.RowsAffected > 0 { if res.RowsAffected > 0 {
DB.Model(&sigSetting).Update("value", models.BigText(sig)) DB.Model(&sigSetting).Update("value", models.BigText(sig))
} else { } else {
+2 -2
View File
@@ -417,7 +417,7 @@ func (s *BackupService) addDirToZip(zipWriter *zip.Writer, srcDir, prefix string
func (s *BackupService) GetBackupFile() string { func (s *BackupService) GetBackupFile() string {
var setting models.Setting var setting models.Setting
res := database.DB.Where("section = ? AND `key` = ?", BackupSection, BackupFileKey).Limit(1).Find(&setting) res := database.DB.Where(&models.Setting{Section: BackupSection, Key: BackupFileKey}).Limit(1).Find(&setting)
if res.Error != nil || res.RowsAffected == 0 { if res.Error != nil || res.RowsAffected == 0 {
return "" return ""
} }
@@ -428,7 +428,7 @@ func (s *BackupService) ClearBackup() error {
filePath := s.GetBackupFile() filePath := s.GetBackupFile()
if filePath != "" { if filePath != "" {
os.Remove(filePath) os.Remove(filePath)
database.DB.Where("section = ? AND `key` = ?", BackupSection, BackupFileKey).Delete(&models.Setting{}) database.DB.Where(&models.Setting{Section: BackupSection, Key: BackupFileKey}).Delete(&models.Setting{})
} }
return nil return nil
} }
+2 -2
View File
@@ -81,7 +81,7 @@ func RunMigrationV3() error {
// 0. 检查迁移标记,防止重复迁移逻辑被误判触发 // 0. 检查迁移标记,防止重复迁移逻辑被误判触发
if db.Migrator().HasTable(&models.Setting{}) { if db.Migrator().HasTable(&models.Setting{}) {
var migrationFlag models.Setting var migrationFlag models.Setting
res := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").Limit(1).Find(&migrationFlag) res := db.Where(&models.Setting{Section: "system", Key: "migration_v3_success"}).Limit(1).Find(&migrationFlag)
if res.Error == nil && res.RowsAffected > 0 && migrationFlag.Value == "true" { if res.Error == nil && res.RowsAffected > 0 && migrationFlag.Value == "true" {
// 如果已经是字符串 ID 模式,双重确认 // 如果已经是字符串 ID 模式,双重确认
logger.Info("[MigrationV3] 系统已处于 V3 模式,跳过检查") logger.Info("[MigrationV3] 系统已处于 V3 模式,跳过检查")
@@ -151,7 +151,7 @@ func markMigrationSuccess(db *gorm.DB) error {
return nil return nil
} }
var flag models.Setting var flag models.Setting
res := db.Where("section = ? AND `key` = ?", "system", "migration_v3_success").Limit(1).Find(&flag) res := db.Where(&models.Setting{Section: "system", Key: "migration_v3_success"}).Limit(1).Find(&flag)
if res.Error != nil || res.RowsAffected == 0 { if res.Error != nil || res.RowsAffected == 0 {
// 创建或更新 // 创建或更新
flag = models.Setting{ flag = models.Setting{
+6 -6
View File
@@ -22,7 +22,7 @@ func (s *SettingsService) InitSettings() error {
for section, keys := range constant.DefaultSettings { for section, keys := range constant.DefaultSettings {
for key, value := range keys { for key, value := range keys {
var count int64 var count int64
database.DB.Model(&models.Setting{}).Where("section = ? AND `key` = ?", section, key).Count(&count) database.DB.Model(&models.Setting{}).Where(&models.Setting{Section: section, Key: key}).Count(&count)
if count == 0 { if count == 0 {
if err := database.DB.Create(&models.Setting{ if err := database.DB.Create(&models.Setting{
ID: utils.GenerateID(), ID: utils.GenerateID(),
@@ -81,7 +81,7 @@ func (s *SettingsService) InitSettings() error {
for k, v := range defaultRetention { for k, v := range defaultRetention {
var count int64 var count int64
database.DB.Model(&models.Setting{}).Where("section = ? AND `key` = ?", constant.SectionSystem, k).Count(&count) database.DB.Model(&models.Setting{}).Where(&models.Setting{Section: constant.SectionSystem, Key: k}).Count(&count)
if count == 0 { if count == 0 {
s.Set(constant.SectionSystem, k, v) s.Set(constant.SectionSystem, k, v)
} }
@@ -89,7 +89,7 @@ func (s *SettingsService) InitSettings() error {
// 初始化或获取 JWT Secret 密码 // 初始化或获取 JWT Secret 密码
var secCount int64 var secCount int64
database.DB.Model(&models.Setting{}).Where("section = ? AND `key` = ?", constant.SectionSecurity, constant.KeySecret).Count(&secCount) database.DB.Model(&models.Setting{}).Where(&models.Setting{Section: constant.SectionSecurity, Key: constant.KeySecret}).Count(&secCount)
var secretValue string var secretValue string
if secCount == 0 { if secCount == 0 {
// 先尝试从配置文件读取遗留下来的旧设 // 先尝试从配置文件读取遗留下来的旧设
@@ -121,7 +121,7 @@ func (s *SettingsService) Get(section, key string) string {
return cache.GetSiteCache(key) return cache.GetSiteCache(key)
} }
var setting models.Setting var setting models.Setting
res := database.DB.Where("section = ? AND `key` = ?", section, key).Limit(1).Find(&setting) res := database.DB.Where(&models.Setting{Section: section, Key: key}).Limit(1).Find(&setting)
if res.Error != nil || res.RowsAffected == 0 { if res.Error != nil || res.RowsAffected == 0 {
if def, ok := constant.DefaultSettings[section][key]; ok { if def, ok := constant.DefaultSettings[section][key]; ok {
return def return def
@@ -134,7 +134,7 @@ func (s *SettingsService) Get(section, key string) string {
// Set 设置单个值 // Set 设置单个值
func (s *SettingsService) Set(section, key, value string) error { func (s *SettingsService) Set(section, key, value string) error {
var setting models.Setting var setting models.Setting
res := database.DB.Where("section = ? AND `key` = ?", section, key).Limit(1).Find(&setting) res := database.DB.Where(&models.Setting{Section: section, Key: key}).Limit(1).Find(&setting)
if res.Error != nil || res.RowsAffected == 0 { if res.Error != nil || res.RowsAffected == 0 {
return database.DB.Create(&models.Setting{ return database.DB.Create(&models.Setting{
ID: utils.GenerateID(), ID: utils.GenerateID(),
@@ -148,7 +148,7 @@ func (s *SettingsService) Set(section, key, value string) error {
// Delete 删除单个设置 // Delete 删除单个设置
func (s *SettingsService) Delete(section, key string) error { func (s *SettingsService) Delete(section, key string) error {
return database.DB.Where("section = ? AND `key` = ?", section, key).Delete(&models.Setting{}).Error return database.DB.Where(&models.Setting{Section: section, Key: key}).Delete(&models.Setting{}).Error
} }
// GetSection 获取整个 section 的设置 // GetSection 获取整个 section 的设置