MySQL errno 150还没有解决方案

时间:2014-05-06 09:52:40

标签: mysql sql database errno

虽然这是一个重复的问题, 我一直在搜索大多数类似的帖子,但没有发现任何有用的东西。 这是我的MySQL SQL脚本。

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)
);

输出为:第9行的ERROR 1005(HY000):无法创建表' store.Tool' (错误:150) 任何建议

1 个答案:

答案 0 :(得分:1)

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

  

如果重新创建已删除的表,则必须具有定义   这符合引用它的外键约束。它必须   拥有正确的列名和类型,并且必须具有索引   如前所述,引用的密钥。如果不满意,MySQL   返回错误号1005并在错误中引用错误150   消息。

我猜你必须使用相同数量的外键,在你的代码中你使用表盒中的2 PK,所以要么只使用box_id作为PK,要么将外键添加到表工具..