MySQL CREATE TABLE 语句上的外键错误(错误:150)
我觉得我已经在一对非常简单的创建表语句上尝试了一切可能的方法。
类型匹配,我尝试使用 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)
对糟糕的变量名称感到抱歉,可以安全地覆盖公司内容。
I feel I've tried everything possible on a very simple pair of create table statements.
The types match, I tried using ENGINE = InnoDB, etc and am stumped why I'm getting the foreign key error.
I've been away from SQL for some time, so this is probably an easy one.
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)
Sorry about the poor variable names, safe to over-write company stuff.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您没有引用字段,只引用了表,这是不正确的。
根据你的错误号,MySQL 文档还指出;
http://dev.mysql.com/doc /refman/5.5/en/innodb-foreign-key-constraints.html
You don't reference to a field, only a table, which is incorrect.
And according to your error number, the MySQL documentation also states;
http://dev.mysql.com/doc/refman/5.5/en/innodb-foreign-key-constraints.html
您应该明确提供引用列的名称:
You should provide the name of the referenced column explicitly:
考虑重写您的 FOREIGN KEY 声明,以显式列出 foo_ent 中您想要键入的列:
CREATE TABLE cat_ent(some_item INTEGER,
yyy_no VARCHAR(80),
苹果 DECIMAL(6,2),
主键(some_item),
外键 (yyy_no) 参考 foo_ent(yyy_no))
引擎=InnoDB;
对我有用。
Consider rewriting your FOREIGN KEY declaration to explicitly list the column in foo_ent that you want to key on:
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(yyy_no))
ENGINE=InnoDB;
works for me.