在phpmyadmin中创建2个表时,我收到这样的错误。
MySQL说:文档
#1215 - 无法添加外键约束
我的表结构是
CREATE TABLE `iwd_storelocator_manufacturer` (
`entity_id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` varchar(255) NOT NULL ,
`code` varchar(255) NOT NULL ,
`grayscale_image` varchar(255) NULL ,
`color_image` varchar(255) NULL ,
PRIMARY KEY (`entity_id`)
);
CREATE TABLE `iwd_storelocator_manufacturer_to_store` (
`manufacturer_id` int(11) UNSIGNED NOT NULL ,
`store_id` int(11) NOT NULL ,
`preferred` int NULL ,
PRIMARY KEY (`manufacturer_id`, `store_id`),
FOREIGN KEY (`store_id`) REFERENCES `iwd_storelocator_store` (`store_id`) ON DELETE RESTRICT ON UPDATE CASCADE,
FOREIGN KEY (`manufacturer_id`) REFERENCES `iwd_storelocator_manufacturer` (`entity_id`) ON DELETE RESTRICT ON UPDATE CASCADE
);
你能告诉我这个问题吗?
这是我的iwd_storelocator_store表
答案 0 :(得分:1)
为了确切地知道错误,您必须登记LATEST FOREIGN KEY ERROR
部分。
使用此查询可以找到它:
SHOW ENGINE INNODB STATUS
此外,请确保所有数据类型都相同:子列的数据类型必须与父列中的数据类型匹配。
如果问题是创建表的顺序(可能导致此错误),只需运行set foreign_key_checks=0
,这样您就可以按任何顺序创建表,而不必创建所有父表之前子表。
最后,确保所有表的编码相同。
编辑:在您的情况下,您还应该给我们iwd_storelocator_store
表
现在我们有了iwd_storelocator_store
表,我认为您应该在store_id
列上创建一个索引,因为它不是表格的主键