我吓坏了。我工作的公司(极其愚蠢)不备份他们的 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)
现在, table 完全消失了。有没有办法访问“#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 分钟。我的裤子现在是棕色和黄色的,但一切都很好,我向所有回答的人表示感谢!
最佳答案
您可以阅读有关该命令的文档:
check
repair
和工具
mysqlcheck
myisamchk
...
我的建议:但首先,如果数据非常重要,出于安全原因,您可能必须停止磁盘上的任何读/写进程,并且可能会停止磁盘。
将来:在进行任何修改之前始终进行自己的备份,即使对于这些修复/检查命令也是如此
mysqldump
mysqlhotcopy
关于php - MySQL ALTER TABLE 删除表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25050805/