【发布时间】:2014-10-09 15:53:43
【问题描述】:
我在 MySQL 数据库中有两个 InnoDB 表。现在我喜欢用FOREIGN KEY 将一个表链接到另一个表。但它以错误代码1005 - Can't create table 中止。
我找到了大量有关此错误的信息。例如这篇文章和answer here on SO。尽管即使是这个答案也对我没有帮助。我认为在我的情况下,提到要检查的每一点都不正确。
我已经创建了一个 MySQLFiddle,您可以使用失败的架构签出:http://sqlfiddle.com/#!2/b9dc43
(请注意,用于添加 FOREIGN KEY 的失败 ALTER TABLE 不包括在内。有关 FOREIGN KEY 查询,请参见下面的架构。)
cms_element_instance.page_IDFK 也有一个 FK,它引用了 page.ID 列,但我删除了这个 FK,以便在 SO 上发布我的问题。
这可能是什么问题?
这里是纯文本模式:
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);
【问题讨论】:
标签: mysql sql foreign-keys foreign-key-relationship