pull/282/head v0.9.1
zijiren233 10 months ago
parent 66527d5968
commit acd1f1894c

@ -135,19 +135,37 @@ func autoMigrate(dst ...any) error {
log.Info("migrating database...")
switch conf.Conf.Database.Type {
case conf.DatabaseTypeMysql:
// if conf.Conf.Database.Type == conf.DatabaseTypeMysql {
// if err := db.Exec("SET FOREIGN_KEY_CHECKS = 0").Error; err != nil {
// return err
// }
// defer func() {
// err := db.Exec("SET FOREIGN_KEY_CHECKS = 1").Error
// if err != nil {
// log.Fatalf("failed to set foreign key checks: %s", err.Error())
// }
// }()
// }
if err := db.Exec("SET FOREIGN_KEY_CHECKS = 0").Error; err != nil {
return err
}
defer func() {
err := db.Exec("SET FOREIGN_KEY_CHECKS = 1").Error
if err != nil {
log.Fatalf("failed to set foreign key checks: %s", err.Error())
}
}()
return db.Set("gorm:table_options", "ENGINE=InnoDB CHARSET=utf8mb4").AutoMigrate(dst...)
case conf.DatabaseTypeSqlite3, conf.DatabaseTypePostgres:
case conf.DatabaseTypeSqlite3:
if err := db.Exec("PRAGMA foreign_keys = OFF").Error; err != nil {
return err
}
defer func() {
err := db.Exec("PRAGMA foreign_keys = ON").Error
if err != nil {
log.Fatalf("failed to set foreign key checks: %s", err.Error())
}
}()
return db.AutoMigrate(dst...)
case conf.DatabaseTypePostgres:
if err := db.Exec("SET CONSTRAINTS ALL DEFERRED").Error; err != nil {
return err
}
defer func() {
err := db.Exec("SET CONSTRAINTS ALL IMMEDIATE").Error
if err != nil {
log.Fatalf("failed to set foreign key checks: %s", err.Error())
}
}()
return db.AutoMigrate(dst...)
default:
return fmt.Errorf("unknown database type: %s", conf.Conf.Database.Type)

Loading…
Cancel
Save