database - 戈姆“插入忽略”
问题描述
我正在尝试在 GORM 中实现“插入忽略”。我试过Create()
了,但我找不到添加Ignore
. 我也试过Gorm 中的条款,
DB.Clauses(clause.Insert{Modifier: "IGNORE"}).Create(&user)`.
但是,我得到一个错误说Clauses undefined (type *"github.com/jinzhu/gorm".DB has no field or method Clauses)
。
我也尝试过使用DB.Raw()
,但我不知道每次如何更改表,因为我的数据库中有很多表。例如
DB.Raw("INSERT IGNORE INTO A/B/C/.. ... ...")`.
我有很多表会通过这个函数,每次我可能会插入到不同的表中。
我想知道是否有人有Insert Ignore
GORM 的经验。谢谢!
解决方案
您好,欢迎来到 StackOverflow。
我想你正在使用gorm v1
. 但是您需要的代码在gorm v2
.
首先,您必须在终端上获取Gorm v2
并MySQL dialector
运行此命令。
go get -u gorm.io/gorm // get gorm v2
go get -u gorm.io/driver/mysql // get dialector of mysql from gorm
然后你可以使用Clauses
gorm。
此代码将为您工作。
import (
"gorm.io/gorm"
"gorm.io/driver/mysql"
)
func main(){
db, err := gorm.Open(mysql.Open(MYSQL_CONNECTION_STRING), &gorm.Config{})
if err != nil {
fmt.Println(err.Error())
}else{
db.Clauses(clause.Insert{Modifier: "IGNORE"}).Create(&user)
}
}
推荐阅读
- python - 如何加快熊猫数据框列类型的转换?
- r - 0 处的垂直线未显示在 Plot_models 包中
- javascript - 触发 HTML5 下载按钮点击
- c# - C#如何将GUID解析为文件夹路径?
- javascript - 为什么我的 google OAuth2 refresh_token 在一周后过期?
- oracle - 生成列列表:列按字母顺序而不是表顺序
- c++ - PCL 中是否有一种方法可以确定使用哪个模型进行分割?
- javascript - 路由仪表板组件的正确方法是什么?
- ansible - 如何在 CI 上测试包含重启任务的 Ansible 角色?
- python - RuntimeError: 你不应该在 `Formula` 上调用 `__bool__` / `__nonzero__`