在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表
iwd_storelocator_store
最佳答案
为了确切地知道出了什么问题,您必须检入LATEST FOREIGN KEY ERROR
部分。
使用此查询可以找出答案:
SHOW ENGINE INNODB STATUS
另外,请确保所有数据类型都相同:子列的数据类型必须与父列的数据类型匹配。
如果问题是表的创建顺序(这可能导致此错误),只需运行
set foreign_key_checks=0
即可,您可以按任何顺序创建表,而不必在子表之前创建所有父表。最后,请确保所有表的编码都相同。
编辑:在您的情况下,您还应该给我们
iwd_storelocator_store
表的结构现在我们有了您的
iwd_storelocator_store
表,我认为您应该在store_id
列上创建索引,因为它不是表的主键