2014-05-06 98 views
0

雖然這是一個重複的問題, 我一直在搜索大部分類似的帖子,但沒有發現有用的東西。 這是我的MySQL的SQL腳本。MySQL errno 150沒有解決方案

CREATE DATABASE IF NOT EXISTS store; 
USE store; 
CREATE TABLE IF NOT EXISTS Box (
coord VARCHAR (255), 
box_id INT UNSIGNED NOT NULL, 
img_path VARCHAR (256), 
PRIMARY KEY (coord, box_id) 
); 
CREATE TABLE IF NOT EXISTS Tool (
serial VARCHAR (50), 
tool_id INT, 
descr VARCHAR (256), 
box_id INT UNSIGNED NOT NULL, 
tool_state BOOLEAN, 
PRIMARY KEY (tool_id), 
FOREIGN KEY (box_id) REFERENCES Box(box_id) 
); 

輸出是:ERROR 1005(HY000)在第9行:無法創建表 'store.Tool'(錯誤:150) 任何建議

+0

在您的第一個表格中,Box主鍵由2列組成,但在第二個列中您只使用1列 – StanislavL

+0

請參閱http://stackoverflow.com/questions/953035/multiple-column-foreign-key-in-mysql – StanislavL

回答

1

來自:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

如果您重新創建了一個已刪除的表,它必須具有符合引用它的外鍵約束的定義 。必須有 具有正確的列名稱和類型,並且它必須具有 引用的k如前所述。如果這些不滿足,MySQL 將返回錯誤號1005,並引用錯誤 消息中的錯誤150。

我想你必須使用相同數量的外鍵的,在你的代碼中使用表盒2 PK,所以要麼你只使用box_id爲您的PK或添加外鍵表工具..

+0

感謝清理我的路徑。 PK由box_id組成,coord現在保留爲UNIQUE字段。謝謝 – Mayhem