Mysql 错误1005 Can';t创建用于添加外键的表
我在MySQL数据库中有两个InnoDB表。现在我想用一个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\
外键将一个表链接到另一个表。但它会中止,错误代码为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`);
我很确定一个唯一的键就足够了,但是你是对的,你需要一个关于引用字段组合的键。