diff --git a/migrator/migrator.go b/migrator/migrator.go index d4989410..afc3e44b 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 || field.UniqueIndex == unique) { // not primary key if !field.PrimaryKey { alterColumn = true diff --git a/schema/field.go b/schema/field.go index d6df6596..7d8704f6 100644 --- a/schema/field.go +++ b/schema/field.go @@ -68,6 +68,7 @@ type Field struct { DefaultValue string DefaultValueInterface interface{} NotNull bool + UniqueIndex bool Unique bool Comment string Size 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, }