PostgreSQL Has-Many关系插入相同的ID错误

问题描述

我有2个具有很多关系的结构,如下所示:

handleSubjectChange(evt){
  this.setState({ ...this.state,subject: evt.target.value },() => {

我在这里关注gorm的文档:https://gorm.io/docs/associations.html#Association-Mode

据我了解,当我们插入type Domain struct { ID uint `gorm:"primaryKey;type:serial"` Emails []Email `gorm:"foreignKey:ID" "column:emails"` } type Email struct { ID uint `gorm:"primaryKey;type:serial"` Address string `gorm:"column:address"` } 记录时,gorm首先将数组电子邮件([] Email)插入数据库,尝试插入数据库时​​遇到了这样的问题:

Domain

这在我的控制台中输出:

var domain models.Domain
var emails []models.Email
for key,_ := range Output {
  emails = append(emails,models.Email{Address: key})
}
domain = models.Domain{
  Emails: emails,}
dataAccess.Domain.Insert(domain) // db.Create(&domain)

Gorm插入2个具有相同ID的电子邮件,因此postresql错误如上所示。 我该如何避免使用相同的ID,因为它是2020/09/10 10:37:46 /Users/tho/go/src/txxxx/exxxx/dataAccess/domains.go:18 ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time (SQLSTATE 21000) [362.162ms] [rows:0] INSERT INTO "emails" ("address","id") VALUES ('info@example.com',2),('d.apple@example.com',2) ON CONFLICT ("id") DO UPDATE SET "id"="excluded"."id" RETURNING "id" 2020/09/10 10:37:46 /Users/tho/go/src/txxxx/exxxx/dataAccess/domains.go:18 ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time (SQLSTATE 21000) [1078.499ms] [rows:1] INSERT INTO "domains" DEFAULT VALUES RETURNING "id" ERRO[0050] Err: ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time (SQLSTATE 21000) ,已经是primaryKey(自动增量)。

解决方法

您需要更改

Emails []Email `gorm:"foreignKey:ID" "column:emails"`

Emails []Email `gorm:"foreignKey:DomainId" "column:domain_id"`

然后添加

DomainId uint   `gorm:"column:domain_id"`

type Email struct

尝试:

type Domain struct {
    ID     uint    `gorm:"primaryKey;type:serial"`
    Domain string  `gorm:"column:domain"`
    Emails []Email `gorm:"foreignKey:DomainId" "column:domain_id"`
}

type Email struct {
    ID       uint   `gorm:"primaryKey;type:serial"`
    Address  string `gorm:"column:address"`
    DomainId uint   `gorm:"column:domain_id"`
}

相关问答

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