GORM Playground Link
https://github.com/go-gorm/playground/pull/515
Description
I am using AutoMigrate as a method of database updates. But when I added some fields to the model, this function reported an error
database: postgres:14.4 gorm version v1.23.8
struct GameUser was
type GameUser struct {
gorm.Model
XXX1 string `gorm:"uniqueIndex;size:255"`
XXX2 string `gorm:"size:255"`
StatAb UserStat `gorm:"embedded;embeddedPrefix:stat_ab_"`
StatRb UserStat `gorm:"embedded;embeddedPrefix:stat_rb_"`
StatSb UserStat `gorm:"embedded;embeddedPrefix:stat_sb_"`
}
type UserStat struct {
TotalMission int
WinRate float64
GroundDestroyCount int
FleetDestroyCount int
GameTime string
AviationDestroyCount int
WinCount int
SliverEagleEarned int64
DeadCount int
}
And i did some modification to struct GameUser
type GameUser struct {
gorm.Model
XXX1 string `gorm:"uniqueIndex;size:255"`
XXX2 string `gorm:"size:255"`
StatAb UserStat `gorm:"embedded;embeddedPrefix:stat_ab_"`
StatRb UserStat `gorm:"embedded;embeddedPrefix:stat_rb_"`
StatSb UserStat `gorm:"embedded;embeddedPrefix:stat_sb_"`
// new fields
GroundRateAb GroundRate `gorm:"embedded;embeddedPrefix:rate_ground_ab_"`
GroundRateRb GroundRate `gorm:"embedded;embeddedPrefix:rate_ground_rb_"`
GroundRateSb GroundRate `gorm:"embedded;embeddedPrefix:rate_ground_sb_"`
}
type UserStat struct {
TotalMission int
WinRate float64
GroundDestroyCount int
FleetDestroyCount int
GameTime string
AviationDestroyCount int
WinCount int
SliverEagleEarned int64
DeadCount int
}
type GroundRate struct {
GameCount int
GroundVehicleGameCount int
TDGameCount int
HTGameCount int
SPAAGameCount int
GameTime string
GroundVehicleGameTime string
TDGameTime string
HTGameTime string
SPAAGameTime string
TotalDestroyCount int
AviationDestroyCount int
GroundDestroyCount int
FleetDestroyCount int
}
If game_user not in the database, it works well, new table game_user will be created. But when the table game_user which created by old struct exists, AutoMigrate error occurs. Error is
panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x0 pc=0x855f1b]
goroutine 1 [running]:
gorm.io/driver/postgres.Migrator.AlterColumn.func1(0xc0012a16c0)
C:/Users/Administrator/go/pkg/mod/gorm.io/driver/postgres@v1.3.8/migrator.go:272 +0x23b
gorm.io/gorm/migrator.Migrator.RunWithValue({{0x60?, 0xc0012c4150?, {0x12a00e0?, 0xc00071ecc0?}}}, {0xf34580?, 0xc0000f4800}, 0xc000117618)
C:/Users/Administrator/go/pkg/mod/gorm.io/gorm@v1.23.8/migrator/migrator.go:52 +0x13c
gorm.io/driver/postgres.Migrator.AlterColumn({{{0x0?, 0xc0012c4150?, {0x12a00e0?, 0xc00071ecc0?}}}}, {0xf34580?, 0xc0000f4800?}, {0xe7d4dd?, 0x0?})
C:/Users/Administrator/go/pkg/mod/gorm.io/driver/postgres@v1.3.8/migrator.go:259 +0xb1
gorm.io/gorm/migrator.Migrator.MigrateColumn({{0x4b?, 0xc001277f50?, {0x12a00e0?, 0xc00071ecc0?}}}, {0xf34580, 0xc0000f4800}, 0xc0002503c0, {0x12a2640, 0xc00036a340})
C:/Users/Administrator/go/pkg/mod/gorm.io/gorm@v1.23.8/migrator/migrator.go:481 +0x625
gorm.io/driver/postgres.Migrator.MigrateColumn({{{0x1?, 0xc001277f50?, {0x12a00e0?, 0xc00071ecc0?}}}}, {0xf34580, 0xc0000f4800}, 0xc0002503c0, {0x12a2640?, 0xc00036a340?})
C:/Users/Administrator/go/pkg/mod/gorm.io/driver/postgres@v1.3.8/migrator.go:227 +0x95
gorm.io/gorm/migrator.Migrator.AutoMigrate.func1(0xc00031b500)
C:/Users/Administrator/go/pkg/mod/gorm.io/gorm@v1.23.8/migrator/migrator.go:123 +0x193
gorm.io/gorm/migrator.Migrator.RunWithValue({{0x70?, 0xc00077d770?, {0x12a00e0?, 0xc00071ecc0?}}}, {0xf34580?, 0xc0000f4800}, 0xc000117c60)
C:/Users/Administrator/go/pkg/mod/gorm.io/gorm@v1.23.8/migrator/migrator.go:52 +0x13c
gorm.io/gorm/migrator.Migrator.AutoMigrate({{0x0?, 0xc00077d770?, {0x12a00e0?, 0xc00071ecc0?}}}, {0xc000524280?, 0x0?, 0x0?})
C:/Users/Administrator/go/pkg/mod/gorm.io/gorm@v1.23.8/migrator/migrator.go:101 +0x1ce
gorm.io/gorm.(*DB).AutoMigrate(0xc0004fe750?, {0xc000524280, 0x2, 0x2})
C:/Users/Administrator/go/pkg/mod/gorm.io/gorm@v1.23.8/migrator.go:28 +0x43
github.com/axiangcoding/ax-web/data.autoMigrate(0xc000117e20?)
it appears something wrong here. Anyone facing the same issue?
Comment From: github-actions[bot]
The issue has been automatically marked as stale as it missing playground pull request link, which is important to help others understand your issue effectively and make sure the issue hasn't been fixed on latest master, checkout https://github.com/go-gorm/playground for details. it will be closed in 30 days if no further activity occurs. if you are asking question, please use the Question template, most likely your question already answered https://github.com/go-gorm/gorm/issues or described in the document https://gorm.io ✨ Search Before Asking ✨