Ubuntu中恢复的MySql文件出错

Ubuntu中恢复的MySql文件出错,mysql,ubuntu,Mysql,Ubuntu,磁盘崩溃了。包含MySql数据库的文件夹已恢复并放置在外部驱动器上。我在一台新机器上安装了MySql,并将恢复的文件夹移动到var/lib/MySql。“显示表格”列出所有表格。其中大约1/2是可以的。另一半给出了错误 ERROR 1146 (42S02): Table 'Moxware.AuxXref' doesn't exist 其中AuxXref是表名 查看实际的Moxware文件夹,我发现有些表确实有.frm.MYD和.MYI文件,但返回错误的表没有.MYD和.MYI文件 我的问题是:

磁盘崩溃了。包含MySql数据库的文件夹已恢复并放置在外部驱动器上。我在一台新机器上安装了MySql,并将恢复的文件夹移动到var/lib/MySql。“显示表格”列出所有表格。其中大约1/2是可以的。另一半给出了错误

ERROR 1146 (42S02): Table 'Moxware.AuxXref' doesn't exist
其中AuxXref是表名

查看实际的Moxware文件夹,我发现有些表确实有.frm.MYD和.MYI文件,但返回错误的表没有.MYD和.MYI文件

我的问题是:如果MYD和MYI文件不存在,那么恢复错误的表还有希望吗?我想没有,但我想确认一下

如果不能这样做,.FRM文件是否包含表定义?如果是的话,有没有办法让我看到这些?这将大大有助于重建这个数据库


我使用的是Ubuntu 14.04和MySql 5.5。

我做了一些研究,结果证明您确实可以从.frm文件恢复表定义。我建议你访问这个网站,它解释了如何做到这一点

由于解释不太完整,或者不太适合我的安装,我将添加这些注释

首先,mysqlfrm实用程序从终端运行,而不是在MySql内部。其次,要使用msqlfrm实用程序,必须安装MySql实用程序。当我简单地键入mysqlfrm命令时,我得到了关于如何使用apt-get安装它的说明,并且它工作得非常好。第三,生成的create语句同样位于MySql之外。它将告诉您如何重建文件,但实际上并没有这样做

因为我缺少MYD和MYI文件,所以我使用MySQl内部的drop table来删除bad.frm文件。这既生成了文件不存在的错误,也删除了.frm文件。然后,我根据mysqlfrm生成的create重新创建了表结构