当我执行以下两个查询时(我将它们简化为绝对必要):
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表。
问题内容: 我正在用MySQL Workbench做一个小型数据库。我有一个名为“ Immobili”的主表,它具有由四列组成的主键:(Comune,Via,Civico,Immobile)。 现在,我还有其他三个表,它们具有相同的主键(Comune,Via,Civico,Immobile),但是这些字段也引用了表Immobili。 第一个问题:我可以同时创建主键还是外键吗? 第二个问题:当我尝试
我正在尝试迁移Rails MySQL数据库,出现以下错误: ActiveRecord::声明无效:MySQL2::Error:不能创建表.(errno: 150"外键约束格式不正确"): CREATE TABLE(intAUTO_INCREMENTPRIMary关键,varchar(255),int,int,datetime非空,datetime非空,INDEX(),INDEX(),CONSTRA
问题内容: 我正在创建一些简单的表,但无法传递此外键错误,而且我不确定为什么。这是下面的脚本。 错误代码:1005。无法创建表‘336_project.sections’(errno:150) 我的数据类型似乎相同,语法似乎正确。谁能指出我在这里没看到的内容吗? 我正在使用MySQL Workbench 5.2 问题答案: 如果您使用的是InnoDB引擎,那是您的问题。以下是手册摘录: 虽然MyS
问题内容: 我正在尝试导入.sql文件及其在创建表时失败。 这是失败的查询: 我从同一数据库中导出了.sql,删除了所有表,现在我试图导入它,为什么会失败? MySQL:无法建立表格’./dbname/data.frm’(错误号:150) 问题答案: 从MySQL-外键约束文档: 如果重新创建已删除的表,则该表必须具有符合引用该表的外键约束的定义。如前所述,它必须具有正确的列名和类型,并且必须在引
我用phpmyadmin导出了我的数据库,其中包括禁用外键和执行到单个事务中,如果存在则删除表,但是当我想导入文件mysql时会抛出一个错误: 第35行错误1215(HY000):无法添加外键约束 谢谢你。
我正在尝试迁移我的Rails MySQL数据库,但遇到以下错误: ActiveRecord::StatementInvalid:mysql2::错误:无法创建表。(错误号:150“外键约束格式不正确”):创建表(int AUTO_INCREMENT主键,varchar(255),int,int,datetime不为空, 以下是我的迁移: 如果有人能在这里给我一个主意,我将非常感谢。我已经搜索了一段