admin

MySQL CREATE TABLE语句上的外键错误(错误:150)

sql

我觉得我已经在一对非常简单的create table语句上尝试了所有可能的方法。

类型匹配,我尝试使用ENGINE = InnoDB,等等,但很困惑为什么出现外键错误。

我离开SQL已经有一段时间了,所以这可能很简单。

mysql> CREATE TABLE foo_ent(yyy_no VARCHAR(80),
    -> zoo VARCHAR(80),
    -> PRIMARY KEY (yyy_no));
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE TABLE cat_ent(some_item INTEGER,
    -> yyy_no VARCHAR(80),
    -> apple DECIMAL(6,2),
    -> PRIMARY KEY (some_item),
    -> FOREIGN KEY (yyy_no) REFERENCES foo_ent);
ERROR 1005 (HY000): Can't create table 'test.cat_ent' (errno: 15
0)

抱歉,变量名称不正确,可以覆盖公司的内容。


阅读 122

收藏
2021-06-07

共1个答案

admin

您不引用字段,仅引用表,这是不正确的。

...
foreign key (yyy_no) references foo_ent(yyy_no)

并且根据您的错误号,MySQL文档也指出了该错误。

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

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

2021-06-07