我正在尝试在MySQL中创建一些表,但遇到一个错误,在这里我找不到答案。这是我要创建的表(为便于阅读而缩进):
component.metadata = /// whatever you want this to be
运行此代码时,MySQL显示:
错误代码:1822。无法添加外键约束。引用表“文章”中约束“ articleauthor_ibfk_2”的缺少索引
有问题的表似乎是ArticleAuthor和Author,但为了以防万一,还包括了其他表。
我在这里查看过,大多数答案都表明,主键/外键之间存在类型不匹配,或者我尝试创建的引用是针对非唯一字段的。但是,所有类型似乎都匹配,我相信我只引用肯定隐式唯一的主键字段吗?任何帮助将不胜感激。
答案 0 :(得分:3)
您的文章主键是:
PRIMARY KEY (FirstPage, LastPage, Month, Year, ISSN)
外键参考是:
FOREIGN KEY (ISSN, Month, Year, FirstPage, LastPage)
这些列的顺序不同。它们必须顺序相同。
也就是说,由5部分组成的复合主键似乎是数据库的噩梦。引入自动递增的articleId
,然后使用:
FOREIGN KEY (articleId) REFERENCES articles (articleId)