Mysql 错误1005 Can';t创建用于添加外键的表

Mysql 错误1005 Can';t创建用于添加外键的表,mysql,sql,foreign-keys,foreign-key-relationship,Mysql,Sql,Foreign Keys,Foreign Key Relationship,我在MySQL数据库中有两个InnoDB表。现在我想用一个外键将一个表链接到另一个表。但它会中止,错误代码为1005-无法创建表 我发现了很多关于这个错误的信息。例如,这篇文章和。尽管这个答案对我的情况也没有帮助。我认为在我的情况下,提到要检查的每一点都不是真的 我创建了一个MySQLFiddle,您可以使用失败的模式进行签出: (请注意,不包括用于添加外键的失败的ALTER TABLE。有关外键查询,请参阅下面的架构。) 还有一个用于cms\u element\u instance.page\

我在MySQL数据库中有两个InnoDB表。现在我想用一个
外键将一个表链接到另一个表。但它会中止,错误代码为
1005-无法创建表

我发现了很多关于这个错误的信息。例如,这篇文章和。尽管这个答案对我的情况也没有帮助。我认为在我的情况下,提到要检查的每一点都不是真的

我创建了一个MySQLFiddle,您可以使用失败的模式进行签出:

(请注意,不包括用于添加外键的失败的
ALTER TABLE
。有关外键查询,请参阅下面的架构。)

还有一个用于
cms\u element\u instance.page\u IDFK
的FK,它引用了
page.ID
列,但是我删除了这个FK,因为我在这里发布了我的问题

这里有什么问题

以下是纯文本模式:

CREATE TABLE `cms_element_instance` (
 `ID` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
 `page_IDFK` mediumint(8) unsigned DEFAULT NULL,
 `revision` varchar(16) DEFAULT NULL,
 PRIMARY KEY (`ID`),
 KEY `page_IDFK` (`page_IDFK`)
) ENGINE=InnoDB AUTO_INCREMENT=1692 DEFAULT CHARSET=utf8;

CREATE TABLE `element_faq_list` (
 `element_instance_IDFK` mediumint(8) unsigned NOT NULL,
 `page_IDFK` mediumint(8) unsigned NOT NULL,
 `mod_faq_collection_IDFK` mediumint(8) unsigned NOT NULL,
 PRIMARY KEY (`element_instance_IDFK`,`page_IDFK`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


-- Create FK: This throws error 1005
ALTER TABLE element_faq_list
ADD CONSTRAINT element_instance_fk
FOREIGN KEY (element_instance_IDFK, page_IDFK)
REFERENCES cms_element_instance( ID , page_IDFK);
您正在添加
(element\u instance\u IDFK,page\u IDFK)
作为外键约束,它引用
cms\u element\u instance
中的
ID,page\u IDFK

ALTER TABLE `cms_element_instance` CHANGE `page_IDFK` `page_IDFK` 
MEDIUMINT(8) UNSIGNED NOT NULL, DROP PRIMARY KEY, 
ADD PRIMARY KEY (`ID`, `page_IDFK`); 

我很确定一个唯一的键就足够了,但是你是对的,你需要一个关于引用字段组合的键。