首页 > 解决方案 > gorm 与 foreignKey 参考有很多关系

问题描述

我的目标是归档与 gorm 的“有很多”关系

我不想生成任何 ID,所以我故意不在我的结构中使用 gorm.Model

我设置了两个结构,例如:

type Application struct {
  Name         string        `json:"name" gorm:"primaryKey"`
  Description  string        `json:"description"`
  Translations []Translation `json:"titles" gorm:"foreignKey:ApplicationName;references:Name"`
}

type Translation struct {
  ApplicationName string `json:"applicationName" gorm:"primaryKey"`
  Locale          string `json:"locale" gorm:"primaryKey"`
  Value           string `json:"value"`
}

Translation.ApplicationName 应该是 Applications 的外键

(Translation.ApplicationName + Translation.Locale) Translations 的主键

创建应用程序后

{
  "name" : "postedApplication1",
  "description" : "postedDescription3",
  "titles" : [
    {
        "locale": "de-DE",
        "value":"deutsch"
    },
     {
        "locale": "de-AT",
        "value":"AT"
    }
  ]
}

我收到以下错误

ON CONFLICT 子句不匹配任何 PRIMARY KEY 或 UNIQUE 约束 [0.065ms] [rows:0] INSERT INTO translations ( application_name, locale, value) VALUES ("postedApplication1","de-DE","deutsch"),("postedApplication1"," de-AT","AT") ON CONFLICT ( application_name, locale) DO UPDATE SET application_name= excluded.application_name

ON CONFLICT 子句不匹配任何 PRIMARY KEY 或 UNIQUE 约束 [0.531ms] [rows:0] UPDATE applicationsSET description="postedDescription3" WHERE name= "postedApplication1" [GIN] 2021/08/27 - 11:23:00 | 200 | 841.953µs | 127.0.0.1 | 发布“/应用程序”

有人知道我做错了什么

标签: gogo-gormgo-gin

解决方案


已解决 qx.X,p

一切都是正确的!

在我安装了 vscode-sqlite 并检查了数据库之后,我才意识到 sqlite 表不像我设计的那样

问题是 AutoMigrate 由于在开发过程中发生了很大变化而产生了无效状态

database.AutoMigrate(&models.Application{}, &models.Translation{})

我不得不删除 sqlite "gorm.db" 文件并重新启动应用程序


推荐阅读