fix: quote index when creating table (#5331)

This commit is contained in:
black-06 2022-05-17 10:59:53 +08:00 committed by GitHub
parent 373bcf7aca
commit f5e77aab2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 1 deletions

View File

@ -223,7 +223,7 @@ func (m Migrator) CreateTable(values ...interface{}) error {
} }
createTableSQL += "," createTableSQL += ","
values = append(values, clause.Expr{SQL: idx.Name}, tx.Migrator().(BuildIndexOptionsInterface).BuildIndexOptions(idx.Fields, stmt)) values = append(values, clause.Column{Name: idx.Name}, tx.Migrator().(BuildIndexOptionsInterface).BuildIndexOptions(idx.Fields, stmt))
} }
} }

View File

@ -262,6 +262,25 @@ func TestMigrateTable(t *testing.T) {
} }
} }
func TestMigrateWithQuotedIndex(t *testing.T) {
if DB.Dialector.Name() != "mysql" {
t.Skip()
}
type QuotedIndexStruct struct {
gorm.Model
Name string `gorm:"size:255;index:AS"` // AS is one of MySQL reserved words
}
if err := DB.Migrator().DropTable(&QuotedIndexStruct{}); err != nil {
t.Fatalf("Failed to drop table, got error %v", err)
}
if err := DB.AutoMigrate(&QuotedIndexStruct{}); err != nil {
t.Fatalf("Failed to auto migrate, but got error %v", err)
}
}
func TestMigrateIndexes(t *testing.T) { func TestMigrateIndexes(t *testing.T) {
type IndexStruct struct { type IndexStruct struct {
gorm.Model gorm.Model