有什么方法可以从 .MYI 和 .frm 文件中恢复 .MYD 文件?

Any way to recover a .MYD file from .MYI and .frm files?

我目前有一个非常重要的数据库的“MYI”和“frm”文件。当我在“MYI”文件上使用“strings”命令时,我实际上可以看到可读数据,“frm”数据似乎没问题。 有什么办法可以使用这两个文件来重新创建“MYD”文件吗?我的最终目标是查看数据库或对其执行 SQL 命令。所以任何有帮助的东西对我来说都很好。

我试图查看 XAMPP 中的数据库,但它似乎已损坏。 (当然是因为我缺少“MYD”文件)

What my directory looks like

.frm 文件用于 table 元数据。 .MYD 和 .MYI 文件仅适用于 MyISAM 存储引擎。 .MYD 文件有整行,按插入顺序存储(大致)。 .MYI 文件有索引数据结构。

因此 .MYI 文件仅包含您 table 的一些列 — 那些在为 table 定义的索引中。数据中但不属于任何索引的列不在 .MYI 文件中。通常只有 table 的几列被索引。因此充其量,如果您能够从 .MYI 文件中恢复字符串,它会缺少 .MYD 文件中的许多列。

我不知道有什么工具可以从 .MYI 文件中“恢复”数据。它是一种内部文件格式,通常只能由 MyISAM 存储引擎代码读取。您可以在此处阅读有关格式的详细信息:https://dev.mysql.com/doc/internals/en/the-myi-file.html

您最好从大多数备份中恢复数据。如果您没有备份,那么可能只是一个关于制作备份重要性的学习经验。