当我执行以下两个查询时(我将它们简化为绝对必要):
mysql> CREATE TABLE foo(id INT PRIMARY KEY); Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE bar ( id INT, ref INT, FOREIGN KEY (ref) REFERENCES foo(id)) ENGINE InnoDB; 我收到以下错误:错误1005(HY000):无法创建表'./test/bar.frm'(errno:150)
我的错误在哪里?半个小时盯着我看,我还没找到他。
来自FOREIGN KEY约束
如果重新创建已删除的表,则该表必须具有符合引用该表的外键约束的定义。如前所述,它必须具有正确的列名和类型,并且必须在引用的键上具有索引。如果不满足这些条件,MySQL将返回错误号1005,并在错误消息中引用错误150。
我怀疑这是因为您没有foo以InnoDB的身份创建,因为其他一切看起来都还可以。
编辑:从同一页面-
两个表都必须是InnoDB表,并且不能是TEMPORARY表。来源:stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。