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

Mus*_*ari 7 mysql database repair recover

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

问题:昨晚像往常一样,我停止了项目工作并正常关闭窗户.今天早上我table MY_TALBE does not exists在浏览器中出错了.show tables在控制台上显示表名,但是desc MY_TABLEselect * from MY_TABLEunknown 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 ***
Run Code Online (Sandbox Code Playgroud)

问题:是否可以恢复/修复MY_TABLE,或者至少可以再次删除/创建它(不丢弃数据库并再次重新启动它)?

Mus*_*ari 2

在 dba.stackexchnage.com 上提出同样的问题后,我找到了如下解决方案:

损坏的表无法修复或恢复。唯一的方法是健康地备份数据库,以及损坏表的数据库的健康表,然后从数据库文件中清除MySQL的基础设施,即从磁盘中删除文件,然后重新开始,即恢复所有数据库和表并重新创建损坏的表。链接的文章还提到可以恢复损坏的表的一些数据。

此外,一些工具(如Percona)可用于恢复损坏的 InnoDB 表,但不适用于 Windows。

请参阅上面的链接了解完整详细信息。