我吓坏了。我在一家公司(非常愚蠢地)没有备份他们的MySQL数据库。我不得不改变一个表中的一个列" items"为了提高项目描述的最大字符数。我使用了以下命令:
ALTER TABLE items CHANGE description description varchar(5000) NOT NULL;
但是,在我输入此命令后,我收到了这个错误:
Error on rename of './company/#sql-b30_400ad' to './company/items' (errno: 150 - Foreign key constraint is incorrectly formed)
现在,桌子完全消失了。有没有办法访问" #sql-b30_400ad"表恢复吗?我知道有一个密钥从这个表中删除了以下方法:
SET foreign_key_checks = 0;
ALTER TABLE items DROP KEY foreign_key_name;
SET foreign_key_checks = 1;
有没有办法撤消发生的事情,或者恢复为ALTER命令创建的临时项目表?
编辑:该表使用InnoDB引擎
再次编辑因此我发现,由于我们将MySQL Web服务用于我们的MySQL服务器,因此AWS会自动每天备份它,最后一次备份在我的错误发生前15分钟便利。我的裤子现在是棕色和黄色,但一切都很好,我向所有回答的人表示感谢!
答案 0 :(得分:1)
您可以阅读有关该命令的文档:
check
repair
和工具
mysqlcheck
myisamchk
...
我的建议:但首先,如果数据非常重要,出于安全原因,您可能必须停止磁盘上的任何读/写过程,并且可能会停止磁盘。
将来:在进行任何修改之前,请始终自行备份,即使是这些修复/检查命令
mysqldump
mysqlhotcopy
答案 1 :(得分:0)
检查一下 http://www.thegeekstuff.com/2014/04/recover-innodb-mysql/
是生产数据库还是开发数据库,如果是开发,我不担心,
答案 2 :(得分:0)
结帐unDROP tool for InnoDB。它允许直接从InnoDB表空间读取记录。
#sql-b30_400ad
是具有新结构的文件。因此,使用stream_parser拆分它,然后使用c_parser提取记录。请参阅https://twindb.com/undrop-tool-for-innodb/,您的案例非常适合说明。