Skip to content

Commit af97cb4

Browse files
committed
Fix migrate columns with default value
1 parent a4858c5 commit af97cb4

File tree

1 file changed

+23
-26
lines changed

1 file changed

+23
-26
lines changed

migrator.go

Lines changed: 23 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -279,35 +279,32 @@ func (m Migrator) AlterColumn(value interface{}, field string) error {
279279
}
280280
}
281281

282-
return m.DB.Connection(func(tx *gorm.DB) error {
283-
fileType := clause.Expr{SQL: m.DataTypeOf(field)}
284-
if fieldColumnType.DatabaseTypeName() != fileType.SQL {
285-
filedColumnAutoIncrement, _ := fieldColumnType.AutoIncrement()
286-
if field.AutoIncrement && filedColumnAutoIncrement { // update
287-
serialDatabaseType, _ := getSerialDatabaseType(fileType.SQL)
288-
if t, _ := fieldColumnType.ColumnType(); t != serialDatabaseType {
289-
if err := m.UpdateSequence(tx, stmt, field, serialDatabaseType); err != nil {
290-
return err
291-
}
292-
}
293-
} else if field.AutoIncrement && !filedColumnAutoIncrement { // create
294-
serialDatabaseType, _ := getSerialDatabaseType(fileType.SQL)
295-
if err := m.CreateSequence(tx, stmt, field, serialDatabaseType); err != nil {
296-
return err
297-
}
298-
} else if !field.AutoIncrement && filedColumnAutoIncrement { // delete
299-
if err := m.DeleteSequence(tx, stmt, field, fileType); err != nil {
300-
return err
301-
}
302-
} else {
303-
if err := tx.Exec("ALTER TABLE ? ALTER COLUMN ? TYPE ? USING ?::?",
304-
m.CurrentTable(stmt), clause.Column{Name: field.DBName}, fileType, clause.Column{Name: field.DBName}, fileType).Error; err != nil {
282+
fileType := clause.Expr{SQL: m.DataTypeOf(field)}
283+
if fieldColumnType.DatabaseTypeName() != fileType.SQL {
284+
filedColumnAutoIncrement, _ := fieldColumnType.AutoIncrement()
285+
if field.AutoIncrement && filedColumnAutoIncrement { // update
286+
serialDatabaseType, _ := getSerialDatabaseType(fileType.SQL)
287+
if t, _ := fieldColumnType.ColumnType(); t != serialDatabaseType {
288+
if err := m.UpdateSequence(m.DB, stmt, field, serialDatabaseType); err != nil {
305289
return err
306290
}
307291
}
292+
} else if field.AutoIncrement && !filedColumnAutoIncrement { // create
293+
serialDatabaseType, _ := getSerialDatabaseType(fileType.SQL)
294+
if err := m.CreateSequence(m.DB, stmt, field, serialDatabaseType); err != nil {
295+
return err
296+
}
297+
} else if !field.AutoIncrement && filedColumnAutoIncrement { // delete
298+
if err := m.DeleteSequence(m.DB, stmt, field, fileType); err != nil {
299+
return err
300+
}
301+
} else {
302+
if err := m.DB.Exec("ALTER TABLE ? ALTER COLUMN ? TYPE ? USING ?::?",
303+
m.CurrentTable(stmt), clause.Column{Name: field.DBName}, fileType, clause.Column{Name: field.DBName}, fileType).Error; err != nil {
304+
return err
305+
}
308306
}
309-
return nil
310-
})
307+
}
311308

312309
if null, _ := fieldColumnType.Nullable(); null == field.NotNull {
313310
if field.NotNull {
@@ -695,4 +692,4 @@ func groupByIndexName(indexList []*Index) map[string][]*Index {
695692

696693
func (m Migrator) GetTypeAliases(databaseTypeName string) []string {
697694
return typeAliasMap[databaseTypeName]
698-
}
695+
}

0 commit comments

Comments
 (0)