【问题标题】:Issue while creating primary key from gorm model从gorm模型创建主键时出现问题
【发布时间】:2019-11-06 04:40:08
【问题描述】:
从 gorm 模型创建主键时,它返回错误“duplicate column name: “id””
我的模型看起来像
type User struct {
gorm.Model
Id string gorm:"primary_key;"
FirstName string
LastName string
}
知道上面的模型有什么问题
【问题讨论】:
标签:
go
primary-key
go-gorm
cockroachdb
【解决方案1】:
Gorm 默认使用ID 作为主键。您正在嵌入的是 part of gorm.Model。
当嵌入gorm.Model 时,您应该将ID 排除在外,因为gorm 已经包含了它。另一种方法是删除嵌入的gorm.Model 并自己指定ID。
引用gorm conventions页面:
gorm.Model 是一个基本的 GoLang 结构,包括以下内容
字段:ID、CreatedAt、UpdatedAt、DeletedAt。
它可以嵌入到您的模型中,或者您可以构建自己的模型
没有它。
创建模式而不是编译失败的原因是很多数据库(包括 CockroachDB)会进行不区分大小写的检查,除非您引用对象名称(Id 匹配 id,但 "Id" 不匹配) .与不区分大小写相比,这会导致两个单独的列名称匹配。