fix: pg sql error #67
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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{
|
||||||
|
|||||||
@@ -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 的设置
|
||||||
|
|||||||
Reference in New Issue
Block a user