Gorm“插入忽略”

问题描述

我正在尝试在GORM中实现“插入忽略”。我尝试了Create(),但是找不到添加Ignore的方法。我也尝试过Clause in 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。

我认为您正在使用for c in Choice: FranceRGB.paste(c,France,box=(1,1,600,450),mask=c) 。但是您需要的代码在gorm v1上。

首先,您必须通过在终端上运行此命令来获得gorm v2Gorm 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 的gorm。

此代码将为您服务。

Clauses
,

对于Gorm v2,答案很明确:Clause in Gorm

对于Gorm v1,您可以在Gorm v1 的测试中找到解决方案。 参考:https://github.com/jinzhu/gorm/blob/master/create_test.go#L285

    if DB.Dialect().GetName() == "mysql" && DB.Set("gorm:insert_modifier","IGNORE").Create(&user).Error != nil {
        t.Error("Should ignore duplicate user insert by insert modifier:IGNORE ")
    }

我多次遇到这个问题,因为我们团队的很多人仍然有很多代码使用 Gorm v1...

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...