php - MySQL ALTER TABLE 删除表

标签 php mysql sql database innodb

我吓坏了。我工作的公司(极其愚蠢)不备份他们的 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/

相关文章:

php - 使用 php 和 mysql 自定义自动递增 "id"

mysql - 如何从mysql数据库编辑liferay guest和site member的权限?

mysql - 用户无法远程连接MySQL

php - 备份失败,因为 ZipArchive::close():无法打开文件:来自 spatie 的 Laravel 备份中的权限被拒绝

以右表最后一项为条件的 SQL 连接

php - 无法将 UDID 从 iPhone 发送到 PHP 到 MySQL 数据库

php - 向 MAMP 添加 GMP PHP 扩展

php - 显示 MySQL 数据库中的外来字符

php - 在此 foreach 循环中设置 PHP 变量

mysql - 使用替换查询在 mysql 中将 "And"替换为 "and"