我的表格定义:
CREATE TABLE x (
a INT NOT NULL,
FOREIGN KEY (a) REFERENCES a (id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE = InnoDB;
会产生以下错误:
ERROR 1005 (HY000): Can't create table './abc/x.frm' (errno: 150)
这是什么意思?
答案 0 :(得分:4)
也许这就是为什么
如果你重新创建一个表 掉线了,它必须有一个定义 符合外键 引用它的约束。它必须 拥有正确的列名称和类型, 它必须有索引 如前所述,引用的密钥。如果 这些都不满意,MySQL返回 错误号1005并指错误 150错误信息。
来自:http://dev.mysql.com/doc/refman/5.1/en/innodb-foreign-key-constraints.html
答案 1 :(得分:3)
使用perror和“errno”错误号来获取错误消息(perror 150):
MySQL错误代码150:外键约束形成错误
答案 2 :(得分:1)
可能a.id不存在。
答案 3 :(得分:1)
如果存在重复的外键名称,也会发生这种情况。
例如,假设您有两个非常相似的长名称表。要“节省”时间,您可以复制并粘贴第一个表的CREATE中的外键名称,然后分散注意力,并且无法更新不同的表名部分。它们恰好共享另一个表的外键,从而产生一个或多个相同的外键名称。
你是否注意到用液晶显示屏撞击显示器并不令人满意?
答案 4 :(得分:0)
当引用的表不使用InnoDB存储格式时,也会抛出此错误。