虽然这是一个重复的问题, 我一直在搜索大多数类似的帖子,但没有发现任何有用的东西。 这是我的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) 任何建议
答案 0 :(得分:1)
来自:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
如果重新创建已删除的表,则必须具有定义 这符合引用它的外键约束。它必须 拥有正确的列名和类型,并且必须具有索引 如前所述,引用的密钥。如果不满意,MySQL 返回错误号1005并在错误中引用错误150 消息。
我猜你必须使用相同数量的外键,在你的代码中你使用表盒中的2 PK,所以要么只使用box_id作为PK,要么将外键添加到表工具..