From a1b7e47e75e5a70cf94f19828175d25fdbe72767 Mon Sep 17 00:00:00 2001 From: black Date: Tue, 9 May 2023 09:32:38 +0800 Subject: [PATCH] fix: drop column with table str (#5795) --- migrator/migrator.go | 2 ++ tests/migrate_test.go | 22 +++++++++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/migrator/migrator.go b/migrator/migrator.go index de60f91c..39d8426f 100644 --- a/migrator/migrator.go +++ b/migrator/migrator.go @@ -55,6 +55,8 @@ func (m Migrator) RunWithValue(value interface{}, fc func(*gorm.Statement) error if table, ok := value.(string); ok { stmt.Table = table + // set schema to avoid panic + stmt.Schema = &schema.Schema{} } else if err := stmt.ParseWithSpecialTableName(value, stmt.Table); err != nil { return err } diff --git a/tests/migrate_test.go b/tests/migrate_test.go index 69f86412..0d617566 100644 --- a/tests/migrate_test.go +++ b/tests/migrate_test.go @@ -616,7 +616,7 @@ func TestMigrateColumns(t *testing.T) { } if err := DB.Table("column_structs").Migrator().DropColumn(&NewColumnStruct{}, "NewName"); err != nil { - t.Fatalf("Failed to add column, got %v", err) + t.Fatalf("Failed to drop column, got %v", err) } if DB.Table("column_structs").Migrator().HasColumn(&NewColumnStruct{}, "NewName") { @@ -628,7 +628,7 @@ func TestMigrateColumns(t *testing.T) { } if err := DB.Table("column_structs").Migrator().RenameColumn(&NewColumnStruct{}, "NewName", "new_new_name"); err != nil { - t.Fatalf("Failed to add column, got %v", err) + t.Fatalf("Failed to rename column, got %v", err) } if !DB.Table("column_structs").Migrator().HasColumn(&NewColumnStruct{}, "new_new_name") { @@ -636,12 +636,28 @@ func TestMigrateColumns(t *testing.T) { } if err := DB.Table("column_structs").Migrator().DropColumn(&NewColumnStruct{}, "new_new_name"); err != nil { - t.Fatalf("Failed to add column, got %v", err) + t.Fatalf("Failed to drop column, got %v", err) } if DB.Table("column_structs").Migrator().HasColumn(&NewColumnStruct{}, "new_new_name") { t.Fatalf("Found deleted column") } + + if err := DB.Table("column_structs").Migrator().AddColumn(&NewColumnStruct{}, "NewName"); err != nil { + t.Fatalf("Failed to add column, got %v", err) + } + + if err := DB.Migrator().RenameColumn("column_structs", "new_name", "new_new_name"); err != nil { + t.Fatalf("Failed to rename column, got %v", err) + } + + if !DB.Migrator().HasColumn("column_structs", "new_new_name") { + t.Fatalf("Failed to find added column") + } + + if err := DB.Migrator().DropColumn("column_structs", "new_new_name"); err != nil { + t.Fatalf("Failed to drop column, got %v", err) + } } func TestMigrateConstraint(t *testing.T) {