Fix defer
This commit is contained in:
parent
9010c20c20
commit
ed7c462ecc
@ -110,30 +110,20 @@ func (m Migrator) FullDataTypeOf(field *schema.Field) (expr clause.Expr) {
|
||||
return
|
||||
}
|
||||
|
||||
// AutoMigrate auto migrate values
|
||||
func (m Migrator) AutoMigrate(values ...interface{}) error {
|
||||
for _, value := range m.ReorderModels(values, true) {
|
||||
queryTx := m.DB.Session(&gorm.Session{})
|
||||
execTx := queryTx
|
||||
if m.DB.DryRun {
|
||||
queryTx.DryRun = false
|
||||
execTx = m.DB.Session(&gorm.Session{Logger: &printSQLLogger{Interface: m.DB.Logger}})
|
||||
}
|
||||
|
||||
if err := execTx.Migrator().ObtainLock(); err != nil {
|
||||
return err
|
||||
func (m Migrator) migrateTable(queryTx, execTx *gorm.DB, value interface{}) (err error) {
|
||||
if err = execTx.Migrator().ObtainLock(); err != nil {
|
||||
return
|
||||
}
|
||||
defer func() {
|
||||
err := execTx.Migrator().ReleaseLock()
|
||||
execTx.AddError(err)
|
||||
err = execTx.Migrator().ReleaseLock()
|
||||
}()
|
||||
|
||||
if !queryTx.Migrator().HasTable(value) {
|
||||
if err := execTx.Migrator().CreateTable(value); err != nil {
|
||||
if err = execTx.Migrator().CreateTable(value); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
if err := m.RunWithValue(value, func(stmt *gorm.Statement) error {
|
||||
if err = m.RunWithValue(value, func(stmt *gorm.Statement) error {
|
||||
columnTypes, err := queryTx.Migrator().ColumnTypes(value)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -201,6 +191,22 @@ func (m Migrator) AutoMigrate(values ...interface{}) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// AutoMigrate auto migrate values
|
||||
func (m Migrator) AutoMigrate(values ...interface{}) error {
|
||||
for _, value := range m.ReorderModels(values, true) {
|
||||
queryTx := m.DB.Session(&gorm.Session{})
|
||||
execTx := queryTx
|
||||
if m.DB.DryRun {
|
||||
queryTx.DryRun = false
|
||||
execTx = m.DB.Session(&gorm.Session{Logger: &printSQLLogger{Interface: m.DB.Logger}})
|
||||
}
|
||||
|
||||
if err := m.migrateTable(queryTx, execTx, value); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
|
Loading…
x
Reference in New Issue
Block a user