go - 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 SETapplication_name
=excluded
.application_name
和
ON CONFLICT 子句不匹配任何 PRIMARY KEY 或 UNIQUE 约束 [0.531ms] [rows:0] UPDATE
applications
SETdescription
="postedDescription3" WHEREname
= "postedApplication1" [GIN] 2021/08/27 - 11:23:00 | 200 | 841.953µs | 127.0.0.1 | 发布“/应用程序”
有人知道我做错了什么
解决方案
已解决 qx.X,p
一切都是正确的!
在我安装了 vscode-sqlite 并检查了数据库之后,我才意识到 sqlite 表不像我设计的那样
问题是 AutoMigrate 由于在开发过程中发生了很大变化而产生了无效状态
database.AutoMigrate(&models.Application{}, &models.Translation{})
我不得不删除 sqlite "gorm.db" 文件并重新启动应用程序
推荐阅读
- c++ - 如何准备 msgpack 通过 ZeroMQ 基础设施发送结构?
- jquery - 调整视口宽度的引导工具提示数据放置
- c - 如何使循环输出中的字符居中?
- multithreading - 使用 HttpContextBase 设置 HttpContext.Current
- python - QCompleter 从多列中选择数据
- python - 隐藏 xticks 标签每个第 n 个标签或 Pandas 图上的值/使 x 轴可读
- sql - 我可以在 SQL 中一起做成对和非成对子查询吗
- html - 我将如何在导航栏下移动我的第一个标题和段落?
- php - PHP - 在两种情况下都在数组返回值中查找字符串中的数组单词
- javascript - markerclusterer 覆盖自定义的单个 geoxml3 标记图标