【问题标题】:MySQL errno 150 without solution yetMySQL errno 150 尚无解决方案
【发布时间】:2014-05-06 09:52:40
【问题描述】:

虽然这是一个重复的问题, 我一直在搜索大多数类似的帖子,但没有发现任何有用的信息。 这是我的 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): Can't create table 'store.Tool' (errno: 150) 任何建议

【问题讨论】:

标签: mysql sql database errno


【解决方案1】:

发件人:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html

如果你重新创建一个被删除的表,它必须有一个定义 符合引用它的外键约束。它必须 具有正确的列名和类型,并且必须在 引用的键,如前所述。如果这些都不满足,MySQL 返回错误号 1005 并在错误中引用错误 150 消息。

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

【讨论】:

  • 感谢您为我扫清道路。 PK 由 box_id 组成,坐标现在保留为 UNIQUE 字段。谢谢
猜你喜欢
  • 2015-05-15
  • 1970-01-01
  • 2014-04-05
  • 2010-12-17
  • 2016-06-08
  • 2012-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多