如何恢复MySQL数据库:文件中的信息不正确:'/xxx.frm';

如何恢复MySQL数据库:文件中的信息不正确:'/xxx.frm';,mysql,disaster-recovery,Mysql,Disaster Recovery,一个非常重要的数据库已经损坏,它位于共享web主机的服务器上,我没有备份。该表包含大量非常重要的电子邮件地址。我可以得到一个表列表,但是如果我用Navicat或phpMyAdmin打开任何一个表,我会得到以下错误: 文件“”中的信息不正确。/表名.frm' 我能够从web主机获得与数据库关联的.frm文件 那里还有其他数据,但如果我至少能得到电子邮件地址,我就没事了 如何恢复此数据库? 我愿意花钱请人来修理。这是服务器故障 首先,.FRM文件不包含任何“数据”。它们只是表格的定义 如果以下所有内

一个非常重要的数据库已经损坏,它位于共享web主机的服务器上,我没有备份。该表包含大量非常重要的电子邮件地址。我可以得到一个表列表,但是如果我用Navicat或phpMyAdmin打开任何一个表,我会得到以下错误:

文件“”中的信息不正确。/表名.frm'

我能够从web主机获得与数据库关联的.frm文件

那里还有其他数据,但如果我至少能得到电子邮件地址,我就没事了

如何恢复此数据库?
我愿意花钱请人来修理。

这是服务器故障

首先,.FRM文件不包含任何“数据”。它们只是表格的定义

如果以下所有内容均为真:

  • 该表正在使用MyISAM存储引擎
  • 您知道重新创建表所需的
    createtable
    语句
然后,执行以下操作:

  • 停止MySQL
  • 备份您的table_name.frm、table_name.MYI、table_name.MYD文件
  • 从mysql数据目录(/var/lib/mysql)中删除它们
  • 启动MySQL
  • 再次创建表
  • 停止MySQL
  • 将.MYD和.MYI文件复制回datadir,替换其中的文件
  • 启动MySQL
  • 利润

  • 我遇到了一个类似的问题,结果是MySQL InnoDB引擎被关闭了(我可以通过phpMyAdmin进行检查,bash pro可以告诉您如何通过其他方式进行检查)。在我的例子中,这是一个简单的重启MySQL的过程,但是如果有什么改变,你可能需要检查你的配置

    您可以尝试以下命令: 检查表tablename

    如果出现“损坏”消息,请尝试:

    修复表表名


    事实上,这些并没有解决我类似的问题,但它们可能对某些人有用。

    谢谢……但这是否意味着如果我使用InnoDB,我就完蛋了?嗯,InnoDB是“安全崩溃”的,比MyISAM更有弹性。.frm文件不能通过正常的mysql使用而损坏。不知道你做了什么,我帮不了你。无论如何,它超出了SO的范围,因为它与编程无关。它对我不起作用,仍然损坏了表。我不记得我的表结构。这是重建桌子的方法吗?