表创建MySQL错误1005

时间:2009-06-16 20:05:07

标签: mysql foreign-keys mysql-error-1005

我的表格定义:

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)

这是什么意思?

5 个答案:

答案 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存储格式时,也会抛出此错误。