From f5e77aab2fd3886f8743d6c9da87d5171f31a521 Mon Sep 17 00:00:00 2001 From: black-06 Date: Tue, 17 May 2022 10:59:53 +0800 Subject: [PATCH] fix: quote index when creating table (#5331) --- migrator/migrator.go | 2 +- tests/migrate_test.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/migrator/migrator.go b/migrator/migrator.go index d4989410..757ab949 100644 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -223,7 +223,7 @@ func (m Migrator) CreateTable(values ...interface{}) error { } 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)) } } diff --git a/tests/migrate_test.go b/tests/migrate_test.go index f862eda0..12eb8ed0 100644 --- a/tests/migrate_test.go +++ b/tests/migrate_test.go @@ -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) { type IndexStruct struct { gorm.Model