feat: 添加Yggdrasil密码重置功能,更新依赖和配置
This commit is contained in:
@@ -59,7 +59,8 @@ func AutoMigrate(logger *zap.Logger) error {
|
||||
logger.Info("开始执行数据库迁移...")
|
||||
|
||||
// 迁移所有表 - 注意顺序:先创建被引用的表,再创建引用表
|
||||
err = db.AutoMigrate(
|
||||
// 使用分批迁移,避免某些表的问题影响其他表
|
||||
tables := []interface{}{
|
||||
// 用户相关表(先创建,因为其他表可能引用它)
|
||||
&model.User{},
|
||||
&model.UserPointLog{},
|
||||
@@ -87,11 +88,30 @@ func AutoMigrate(logger *zap.Logger) error {
|
||||
|
||||
// Casbin权限规则表
|
||||
&model.CasbinRule{},
|
||||
)
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
logger.Error("数据库迁移失败", zap.Error(err))
|
||||
return fmt.Errorf("数据库迁移失败: %w", err)
|
||||
// 逐个迁移表,以便更好地定位问题
|
||||
for _, table := range tables {
|
||||
tableName := fmt.Sprintf("%T", table)
|
||||
logger.Info("正在迁移表", zap.String("table", tableName))
|
||||
if err := db.AutoMigrate(table); err != nil {
|
||||
logger.Error("数据库迁移失败", zap.Error(err), zap.String("table", tableName))
|
||||
// 如果是 User 表且错误是 insufficient arguments,可能是 Properties 字段问题
|
||||
if tableName == "*model.User" {
|
||||
logger.Warn("User 表迁移失败,可能是 Properties 字段问题,尝试修复...")
|
||||
// 尝试手动添加 properties 字段(如果不存在)
|
||||
if err := db.Exec("ALTER TABLE \"user\" ADD COLUMN IF NOT EXISTS properties jsonb").Error; err != nil {
|
||||
logger.Error("添加 properties 字段失败", zap.Error(err))
|
||||
}
|
||||
// 再次尝试迁移
|
||||
if err := db.AutoMigrate(table); err != nil {
|
||||
return fmt.Errorf("数据库迁移失败 (表: %T): %w", table, err)
|
||||
}
|
||||
} else {
|
||||
return fmt.Errorf("数据库迁移失败 (表: %T): %w", table, err)
|
||||
}
|
||||
}
|
||||
logger.Info("表迁移成功", zap.String("table", tableName))
|
||||
}
|
||||
|
||||
logger.Info("数据库迁移完成")
|
||||
|
||||
Reference in New Issue
Block a user