情况:我有一个包含104个表的MySQL数据库,在Windows 7的XAMPP上本地运行。所有表都具有InnoDB引擎。XAMPP MySQL正在作为Windows服务运行。作为前端,我有PHP(CodeIgniter)。
问题:昨晚像往常一样,我停止了该项目的工作,并正常关闭了Windows。今天早上,我table MY_TALBE does not exists
在浏览器中出现错误。show tables
在控制台上显示的表名,但desc MY_TABLE
和select * 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
,或者至少如何删除并重新创建它(而无需删除数据库并再次重新创建它)?
在dba.stackexchnage.com上问了同样的问题之后,我找到了如下解决方案:
损坏的表不可修复也不可恢复。唯一的方法是健康备份数据库以及具有损坏表的数据库的健康表,然后从数据库文件中清除MySQL的基础结构,即从磁盘上删除文件,然后重新启动,即还原所有数据库和表,并重新创建损坏的表。链接的文章还提到可以恢复已损坏表的某些数据。
还可以使用某些工具(如Percona)来还原损坏的InnoDB表,但不适用于Windows。
有关完整的详细信息,请参考上面的链接。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句