mysql无法创建表errno 150

时间:2016-02-25 11:14:00

标签: mysql database innodb

我正在使用mysql innodb引擎并在创建外键的过程中mysql崩溃了。现在我的表格不存在,当我再次尝试创建它时,我得到错误150.我知道这个错误与约束有一些关系,但我真的不知道如何重新创建表格。我尝试用相同的字段重新创建,但没有。另外,我删除了以" #sql - *。frm"开头的表格。但也没什么。我真的不知道innodb在哪里存储有关破损表及其约束的信息。请帮助重新创建表格。

更新

使用SHOW ENGINE INNODB STATUS之后我得到了:

最新的外键错误

160225 11:50:49表mesavis / furnace_report的外键约束出错: 表中没有包含索引的索引 列作为第一列,或者是数据类型 table与引用表中的表不匹配 或其中一个ON ... SET NULL列被声明为NOT NULL。约束: ,  CONSTRAINT" furnace_report_ibfk_2"外键(" FK_treatment")参考"治疗" (" ID")ON DELETE CASCADE

但是当我尝试做ALTER TABLE furnace_report DROP FOREIGN KEY furnace_report_ibfk_2;我得到那个炉子炉灶不存在

如何删除那些损坏的约束,例如furnace_report_ibfk_2。他们必须放在某处。

1 个答案:

答案 0 :(得分:0)

InnoDB monitor可以在收到上述错误消息后告诉您哪些约束导致了该问题。请参阅"最新的外键错误"链接页面中的示例输出中的部分,用于预期输出。

由于你提到你有以#sql开头的.frm文件,你可能在innodb数据字典中也有孤立表。请参阅有关如何摆脱此类表的innodb troubleshooting的mysql文档。