无法在phpmyadmin中添加外键约束

时间:2016-07-12 06:18:25

标签: mysql phpmyadmin

在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

1 个答案:

答案 0 :(得分:1)

为了确切地知道错误,您必须登记LATEST FOREIGN KEY ERROR部分。

使用此查询可以找到它:

SHOW ENGINE INNODB STATUS

此外,请确保所有数据类型都相同:子列的数据类型必须与父列中的数据类型匹配。

如果问题是创建表的顺序(可能导致此错误),只需运行set foreign_key_checks=0,这样您就可以按任何顺序创建表,而不必创建所有父表之前子表。

最后,确保所有表的编码相同。

编辑:在您的情况下,您还应该给我们iwd_storelocator_store

的结构

现在我们有了iwd_storelocator_store表,我认为您应该在store_id列上创建一个索引,因为它不是表格的主键