diff --git a/migrator/migrator.go b/migrator/migrator.go index d4989410..130c2a79 100644 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -440,7 +440,7 @@ func (m Migrator) MigrateColumn(value interface{}, field *schema.Field, columnTy } // check unique - if unique, ok := columnType.Unique(); ok && unique != field.Unique { + if unique, ok := columnType.Unique(); ok && !(unique == field.Unique || unique == field.UniqueIndex) { // not primary key if !field.PrimaryKey { alterColumn = true diff --git a/schema/field.go b/schema/field.go index d6df6596..4d25c56a 100644 --- a/schema/field.go +++ b/schema/field.go @@ -69,6 +69,7 @@ type Field struct { DefaultValueInterface interface{} NotNull bool Unique bool + UniqueIndex bool Comment string Size int Precision int @@ -114,6 +115,7 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field { HasDefaultValue: utils.CheckTruth(tagSetting["AUTOINCREMENT"]), NotNull: utils.CheckTruth(tagSetting["NOT NULL"], tagSetting["NOTNULL"]), Unique: utils.CheckTruth(tagSetting["UNIQUE"]), + UniqueIndex: utils.CheckTruth(tagSetting["UNIQUEINDEX"]), Comment: tagSetting["COMMENT"], AutoIncrementIncrement: 1, }