2016-07-12 66 views
0

在phpmyadmin中創建2個表時,我收到了這樣的錯誤。不能在phpmyadmin中添加外鍵約束

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

+0

我已經成功創建了這些表,但沒有FK到iwd_storelocator_store。也許這張桌子是問題的原因? –

+0

「iwd_storelocator_store」表的結構如何? – 1000111

+0

我給出了iwd_storelocator_store表結構。 – Sheen

回答

1

爲了確切地知道什麼是錯的,你必須在LATEST FOREIGN KEY ERROR部分檢查。

使用該查詢發現了這一點:

SHOW ENGINE INNODB STATUS 

同時,確保所有的數據類型是相同的:孩子列的數據類型必須從父列的數據類型相匹配。

如果問題是創建表的(這可能會導致這個錯誤),只需運行set foreign_key_checks=0這樣你就可以在任何順序表,而不是創建所有的家長表子表的順序。

最後,確保所有表的編碼都是相同的。

編輯:你的情況,你應該也給我們iwd_storelocator_store表的結構

現在,我們有你的iwd_storelocator_store表,我認爲,這不是主,你應該創建store_id列的索引表的鍵