gorm AutoMigrate primarykey repeat问题

zzlelutf  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(86)

我修改为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列在结构中,还有其他解决方案吗?

wkyowqbh

wkyowqbh1#

你可以在这里查看gorm的文档,
https://gorm.io/docs/migration.html#:~:text= NOTE%3A%20AutoMigrate%20will%20tables,columns%20to%20protect%20your%20data.
您可以看到,您迁移的结构体中没有一个列被删除,这会导致可能已经创建了具有不同数据类型的id列等问题。

相关问题