【问题标题】:MySQL error 1005 on table create表创建时 MySQL 错误 1005
【发布时间】:2010-11-03 11:17:59
【问题描述】:

我的表定义:

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)

这是什么意思?

【问题讨论】:

  • 表'a'是否已经存在?

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


【解决方案1】:

可能a.id不存在。

【讨论】:

    【解决方案2】:

    使用带有“errno”错误号的perror 来获取错误消息(perror 150):

    MySQL 错误代码 150:外键约束格式错误

    【讨论】:

      【解决方案3】:

      也许这就是原因

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

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

      【讨论】:

        【解决方案4】:

        如果有重复的外键名称也会发生这种情况。

        例如,假设您有两个非常相似且名称很长的表。为了“节省”时间,您从第一个表的 CREATE 复制并粘贴外键名称,然后分心并且无法更新表名称的不同部分。它们碰巧与另一个表共享一个外键,从而产生一个或多个相同的外键名称。

        您是否注意到,用 LCD 将头撞在显示器上并不令人满意?

        【讨论】:

          【解决方案5】:

          当被引用的表不使用InnoDB存储格式时也会抛出这个错误。

          【讨论】:

            猜你喜欢
            • 2012-10-15
            • 1970-01-01
            • 2013-07-22
            • 2016-02-11
            • 2019-06-14
            • 2013-03-30
            • 2020-04-10
            • 1970-01-01
            • 2021-08-06
            相关资源
            最近更新 更多