MySQL缺少约束索引

时间:2019-11-10 21:51:59

标签: mysql sql

我正在尝试在MySQL中创建一些表,但遇到一个错误,在这里我找不到答案。这是我要创建的表(为便于阅读而缩进):

component.metadata = /// whatever you want this to be

运行此代码时,MySQL显示:

  

错误代码:1822。无法添加外键约束。引用表“文章”中约束“ articleauthor_ibfk_2”的缺少索引

有问题的表似乎是ArticleAuthor和Author,但为了以防万一,还包括了其他表。

我在这里查看过,大多数答案都表明,主键/外键之间存在类型不匹配,或者我尝试创建的引用是针对非唯一字段的。但是,所有类型似乎都匹配,我相信我只引用肯定隐式唯一的主键字段吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

您的文章主键是:

PRIMARY KEY (FirstPage, LastPage, Month, Year, ISSN)

外键参考是:

FOREIGN KEY (ISSN, Month, Year, FirstPage, LastPage)

这些列的顺序不同。它们必须顺序相同。

也就是说,由5部分组成的复合主键似乎是数据库的噩梦。引入自动递增的articleId,然后使用:

FOREIGN KEY (articleId) REFERENCES articles (articleId)