首页 > 解决方案 > 戈姆“插入忽略”

问题描述

我正在尝试在 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 IgnoreGORM 的经验。谢谢!

标签: databasegoinsertgo-gorm

解决方案


您好,欢迎来到 StackOverflow。

我想你正在使用gorm v1. 但是您需要的代码在gorm v2.

首先,您必须在终端上获取Gorm v2MySQL dialector运行此命令。

go get -u gorm.io/gorm // get gorm v2
go get -u gorm.io/driver/mysql // get dialector of mysql from gorm

然后你可以使用Clausesgorm。

此代码将为您工作。

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)
    }
}


推荐阅读