Stellen Sie die Tabellenstruktur aus FRM- und IBD-Dateien wieder her
P粉637866931
P粉637866931 2023-10-19 10:01:37
0
2
439

Ich versuche, die Datenbank in PMA wiederherzustellen, kann aber nur auf die Dateien frm und ibd zugreifen – nicht auf die Datei ib_log, die Sie meines Wissens benötigen.

Ich weiß, dass ich die Datenbankdaten möglicherweise nicht wiederherstellen kann, aber ist es möglich, die Struktur der Tabelle aus der FRM-Datei wiederherzustellen?

P粉637866931
P粉637866931

Antworte allen(2)
P粉569205478

我仅从 .frm.idb 文件恢复了表。

获取用于创建表的 SQL 查询

如果您已经知道表的架构,则可以跳过此步骤。

  1. 首先,安装MySQL 实用程序。 然后您可以在命令提示符(cmd)中使用mysqlfrm命令。

  2. 其次,使用 mysqlfrm 命令从 .frm 文件获取 SQL 查询:

    mysqlfrm --diagnostic <path>/example_table.frm

然后您可以获取 SQL 查询来创建相同的结构化表。 像这样:

CREATE TABLE `example_table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(150) NOT NULL,
  `photo_url` varchar(150) NOT NULL,
  `password` varchar(600) NOT NULL,
  `active` smallint(6) NOT NULL,
  `plan` int(11) NOT NULL,
PRIMARY KEY `PRIMARY` (`id`)
) ENGINE=InnoDB;

创建表

使用上述 SQL 查询创建表。

如果旧数据仍然存在,您可能需要先删除相应的数据库和表。确保您有数据文件的备份。

恢复数据

运行此查询以删除新表数据:

ALTER TABLE example_table DISCARD TABLESPACE;

这将删除新的 .frm 文件和(新的、空的).idb 文件之间的连接。另外,删除文件夹中的 .idb 文件。

然后,将旧的.idb文件放入新文件夹中,例如:

cp backup/example_table.ibd <path>/example_table.idb

确保 .ibd 文件可以被 mysql 用户读取,例如通过在文件夹中运行 chown -R mysql:mysql *.ibd 。

运行此查询以导入旧数据:

ALTER TABLE example_table IMPORT TABLESPACE;

这将从 .idb 文件导入数据并将恢复数据。

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!