我修改为automigrate这个结构:
type User struct {
ID uint
Name string
}
字符串
用这个:
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
fmt.Println("failed to connect database:", err)
return
}
// AutoMigrate the User model
err = db.AutoMigrate(&model.User{})
if err != nil {
fmt.Println("failed to migrate database:", err)
}
}
型
然后我得到了err,它说我有多个primarykey和id:
0m[33m[0.010ms] [34;1m[rows:0][0m CREATE TABLE `users` (`id` integer PRIMARY KEY AUTOINCREMENT,`name` text,PRIMARY KEY (`id`))
failed to migrate database: table "users" has more than one primary key
型
我试过删除gorm标签,但它不起作用,将ID更改为String类型可以解决这个问题,或者简单地删除ID行将使它起作用,但我怎么能保留这一行呢?如果我真的想要一个ID列在结构中,还有其他解决方案吗?
1条答案
按热度按时间wkyowqbh1#
你可以在这里查看gorm的文档,
https://gorm.io/docs/migration.html#:~:text= NOTE%3A%20AutoMigrate%20will%20tables,columns%20to%20protect%20your%20data.
您可以看到,您迁移的结构体中没有一个列被删除,这会导致可能已经创建了具有不同数据类型的id列等问题。