如何恢复从我的MySQL数据库的一个.myd
,.myi
,.frm
文件?
如何恢复从我的MySQL数据库的一个.myd
,.myi
,.frm
文件?
Answers:
如果这些是MyISAM表,则将.FRM,.MYD和.MYI文件放入数据库目录(例如/var/lib/mysql/dbname
)将使该表可用。它不必是来自相同数据库的数据库,相同服务器,相同MySQL版本或相同体系结构。您可能还需要更改文件夹的所有权(例如chown -R mysql:mysql /var/lib/mysql/dbname
)
请注意,权限(GRANT
等)是mysql
数据库的一部分。因此它们将不会与表一起恢复;您可能需要运行适当的GRANT
语句来创建用户,授予访问权限等。(可以恢复mysql
数据库,但是在使用MySQL版本和该mysql_upgrade
实用程序的任何必需运行时都需要小心。)
实际上,您可能只需要.FRM(表结构)和.MYD(表数据),但是您必须修复表以重建.MYI(索引)。
唯一的限制是,如果您要降级,则最好检查发行说明(并可能运行修复表)。当然,较新的MySQL版本增加了功能。
[虽然很明显,但是如果您混合并匹配表,则这些表之间关系的完整性是您的问题;MySQL不会在乎,但您的应用程序和用户可能会。同样,此方法对于InnoDB表根本不起作用。只有MyISAM,但考虑到您拥有的文件,您就有MyISAM]
check table sometable;
然后运行修复(仅在需要时):repair table sometable;
我刚刚发现解决方案。我在Windows 7上使用MySQL 5.1或5.6。
无需为此恢复找到.MYI和.MYD文件。
innodb_force_recovery = 4
关卡(不确定在这种情况下是否需要这样做)。谢天谢地!
ibdata1
是InnoDB,不是MyISAM。
简单!创建一个虚拟数据库(例如abc)
将所有这些.myd,.myi,.frm文件复制到mysql \ data \ abc,其中mysql \ data \是所有数据库的.myd,.myi,.frm的存储位置。
然后转到phpMyadmin,转到db abc,然后找到您的数据库。
我认为.myi您可以从mysql内部修复。
如果您从MySQL中看到以下类型的错误消息:数据库无法执行查询(查询)1016:无法打开文件:'sometable.MYI'。(错误号:145)错误消息:1034:表“ sometable”的密钥文件不正确。尝试修复它,然后可能表已损坏或损坏。
您可以从mysql提示符下检查和修复表,如下所示:
check table sometable;
+------------------+-------+----------+----------------------------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------------------------+
| yourdb.sometable | check | warning | Table is marked as crashed |
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------------------------+
repair table sometable;
+------------------+--------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+--------+----------+----------+
| yourdb.sometable | repair | status | OK |
+------------------+--------+----------+----------+
现在你的桌子应该可以了:
check table sometable;
+------------------+-------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+------------------+-------+----------+----------+
| yourdb.sometable | check | status | OK |
+------------------+-------+----------+----------+
我找到了一种将文件转换为文件的解决方案.sql
(您可以将.sql
文件导入服务器并恢复数据库),而无需访问/var
目录,因此您也无需成为服务器管理员即可执行此操作。
它确实需要在计算机上安装XAMPP或MAMP。
C:\XAMPP
)和子目录mysql\data
。完整路径应为C:\XAMPP\mysql\data
在内部,您将看到您创建的任何其他数据库的文件夹。复制和文件夹充分贴合.myd
,.myi
并且.frm
文件到那里。该文件夹的路径应为
C:\XAMPP\mysql\data\foldername\.mydfiles
然后localhost/phpmyadmin
在浏览器中访问。选择您刚刚粘贴到该mysql\data
文件夹中的数据库,然后在导航栏中单击“导出”。选择将其导出为.sql
文件。然后它将弹出,询问将文件保存在何处
就是这样!你(应该)现在有一个.sql
包含原本的数据库文件.myd
,.myi
并且.frm
文件。然后,您可以通过创建新数据库并在导航栏中按“导入”,然后按照以下步骤将其导入,通过phpMyAdmin将其导入到另一台服务器:
您可以将文件复制到数据文件夹的适当命名的子目录目录中,只要它与MySQL完全相同即可,并且已将所有关联文件保留在该目录中。如果您没有所有文件,我很确定您会遇到问题。
http://forums.devshed.com/mysql-help-4/mysql-installation-problems-197509.html
它说重命名ib_ *文件。我已经做到了,它还给了我数据库。
对于具有Windows XP和MySQL Server 5.5的用户-数据库的位置为C:\ Documents and Settings \ All Users \ Application Data \ MySQL \ MySQL Server 5.5 \ data,除非您在MySql Workbench安装中更改了位置GUI。