如何在 mysql 中修复或删除/创建损坏的表?

Posted

技术标签:

【中文标题】如何在 mysql 中修复或删除/创建损坏的表?【英文标题】:How to repair, or drop/create a corrupted table in mysql? 【发布时间】:2014-05-10 09:11:02 【问题描述】:

情况:我有一个 mysql 数据库,有 104 个表,在 Windows 7 上的 XAMPP 上本地运行。所有表都有 InnoDB 引擎。 XAMPP MySQL 作为 Windows 服务运行。作为前端,我有 php (CodeIgniter)。

问题:昨晚我像往常一样停止了该项目的工作并正常关闭了窗口。今天早上我在浏览器中收到错误table MY_TALBE does not exists。控制台上的show tables 显示表名,但desc MY_TABLEselect * from MY_TABLE 显示unknown table。我试过create table MY_TABLE(...),但我有错误table MY_TABLE already exists,所以我试过drop table MY_TABLE,但它说Unknown table MY_TABLE!我尝试 mysqlcheck.exe 进行修复和检查,它们都失败了,但之后,show tables 不再显示表名。我需要提到我没有更改/移动/删除/重命名任何 mysql 文件。我也不能删除数据库:

mysql> drop database MY_DB;
No connection. Trying to reconnect...
Connection id:    1
Current database: *** NONE ***

问题:是否可以恢复/修复MY_TABLE,或者至少如何删除并重新创建它(无需删除数据库并重新创建它)?

【问题讨论】:

检查你的mysql位置是否存在备份文件夹,它可能有自动备份 这个网址可能会有所帮助:thegeekstuff.com/2011/12/mysqlcheck @A5l-lE5 有一个备份文件夹,但我的数据库没有文件。 @ursitesion 正如问题中提到的,我已经对它们进行了失败的测试 geek.co.il/2013/04/27/recovering-innodb-tables-in-mysql-5 你也查过隐藏文件吗? 【参考方案1】:

在dba.stackexchnage.com上询问 the same question后,我找到了如下解决方案:

损坏的表不可修复也不可恢复。唯一的方法是健康备份数据库,以及损坏表的数据库的健康表,然后从数据库文件中清理 MySQL 的基础结构,即从磁盘中删除文件,然后重新启动,即恢复所有数据库和表,并重新创建损坏的表。链接的文章还提到可以恢复损坏表的一些数据。

Percona 等工具也可用于恢复损坏的 InnoDB 表,但不适用于 Windows。

请参阅以上链接了解完整详情。

【讨论】:

以上是关于如何在 mysql 中修复或删除/创建损坏的表?的主要内容,如果未能解决你的问题,请参考以下文章

错误:MySQL 意外关闭。 XAMPP,如何修复损坏的表

MySQL InnoDB 表损坏——如何修复?

mysql修复损坏的表注意事项

如何修复损坏的MySQL数据表

如何修复 localhost xampp 中损坏的表“global_priv”

如何修复损坏的MySQL数据表