MySQL建表时出现错误1005

发布于 2024-07-24 22:51:37 字数 293 浏览 9 评论 0原文

我的表定义:

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)

这是什么意思?

My table definition:

CREATE TABLE x (
    a INT NOT NULL,
    FOREIGN KEY (a) REFERENCES a (id) ON UPDATE CASCADE ON DELETE CASCADE
) ENGINE = InnoDB;

which produces the following error:

ERROR 1005 (HY000): Can't create table './abc/x.frm' (errno: 150)

What does this mean?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

半岛未凉 2024-07-31 22:51:37

也许这就是原因

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

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

Maybe this is why

If you re-create a table that was
dropped, it must have a definition
that conforms to the foreign key
constraints referencing it. It must
have the right column names and types,
and it must have indexes on the
referenced keys, as stated earlier. If
these are not satisfied, MySQL returns
error number 1005 and refers to error
150 in the error message.

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

鯉魚旗 2024-07-31 22:51:37

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

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

use perror with the "errno" error number to get the error message (perror 150):

MySQL error code 150: Foreign key constraint is incorrectly formed

没企图 2024-07-31 22:51:37

也许那个 a.id 并不存在。

Probably that a.id doesn't exist.

黯然#的苍凉 2024-07-31 22:51:37

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

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

您是否注意到,用头撞显示器并不能令人满意?

This also happens if there are duplicate foreign key names.

Say for example that you have two very similar tables with long names. To "save" time, you copy and paste the foreign key names from the first table's CREATE, then get distracted and fail to update the part of the table name that is different. They happen to share a foreign key to another table, resulting in one or more identical foreign key names.

Have you noticed that bashing your head against the monitor isn't as satisfying with an LCD?

慢慢从新开始 2024-07-31 22:51:37

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

This error is also thrown when the referenced table does not use the InnoDB storage format.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文