Attempt to fix clear db for mysql
This commit is contained in:
parent
ed02e90338
commit
3073cfb953
|
@ -191,22 +191,28 @@ func MigrateDatabase(db *gorm.DB) error {
|
|||
func ClearDatabase(db *gorm.DB) error {
|
||||
err := db.Transaction(func(tx *gorm.DB) error {
|
||||
|
||||
db_driver := drivers.DatabaseDriver()
|
||||
|
||||
if db_driver == drivers.DatabaseDriverMysql {
|
||||
if err := tx.Exec("SET FOREIGN_KEY_CHECKS = 0;").Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
dry_run := tx.Session(&gorm.Session{DryRun: true})
|
||||
for _, model := range database_models {
|
||||
// get table name of model structure
|
||||
table := dry_run.Find(model).Statement.Table
|
||||
|
||||
switch drivers.DatabaseDriver() {
|
||||
switch db_driver {
|
||||
case drivers.DatabaseDriverPostgres:
|
||||
if err := tx.Exec(fmt.Sprintf("TRUNCATE TABLE %s CASCADE", table)).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
break
|
||||
case drivers.DatabaseDriverMysql:
|
||||
if err := tx.Exec(fmt.Sprintf("TRUNCATE TABLE %s", table)).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
break
|
||||
case drivers.DatabaseDriverSqlite:
|
||||
if err := tx.Exec(fmt.Sprintf("DELETE FROM %s", table)).Error; err != nil {
|
||||
return err
|
||||
|
@ -215,6 +221,12 @@ func ClearDatabase(db *gorm.DB) error {
|
|||
|
||||
}
|
||||
|
||||
if db_driver == drivers.DatabaseDriverMysql {
|
||||
if err := tx.Exec("SET FOREIGN_KEY_CHECKS = 1;").Error; err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
|
||||
|
|
Binary file not shown.
Loading…
Reference in New Issue