【发布时间】:2014-07-31 04:21:15
【问题描述】:
我吓坏了。我在一家(非常愚蠢)不备份他们的 MySQL 数据库的公司工作。我必须更改表“项目”中的一列,以提高项目描述的最大字符数。我使用了以下命令:
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 引擎
再次编辑:所以我发现,由于我们使用 Amazon Web Service 作为我们的 MySQL 服务器,AWS 每天都会自动备份它,最后一次备份是在我出错前 15 分钟方便地进行。我的裤子现在是棕色和黄色的,但一切都很好,我感谢所有回答的人!
【问题讨论】:
-
我试过
SELECT * FROM #sql-b30_400ad,但它说该表不存在。 -
对不起,一经删除,就没了。但是check out here。它可能会帮助你。
-
我怀疑它一旦被删除就已经完成了
-
如果您在那里工作并修改表,您不能说“他们的 MySQL 数据库”。它也是你的数据库。
-
bugs.mysql.com/bug.php?id=70260 - 但没有任何关于恢复的内容。
标签: php mysql sql database innodb