Ich habe die Tabelle nur aus .frm
wiederhergestellt und .idb
Dateien.
Holen Sie sich die SQL-Abfrage, um die Tabellen zu erstellen
Wenn Sie das Schema Ihrer Tabellen bereits kennen, können Sie diesen Schritt überspringen.
-
Installieren Sie zuerst MySQL Utilities .Dann können Sie
mysqlfrm
verwenden Befehl in der Eingabeaufforderung (cmd). -
Zweitens holen Sie sich die SQL-Abfragen aus
.frm
Dateien mitmysqlfrm
Befehl:mysqlfrm --diagnostic <path>/example_table.frm
Dann können Sie die SQL-Abfrage dazu bringen, dieselbe strukturierte Tabelle zu erstellen. So:
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;
Erstellen Sie die Tabellen
Erstellen Sie die Tabelle(n) mit der obigen SQL-Abfrage.
Wenn die alten Daten noch vorhanden sind, müssen Sie möglicherweise zuerst die entsprechende Datenbank und die entsprechenden Tabellen löschen. Stellen Sie sicher, dass Sie eine Sicherungskopie der Datendateien haben.
Daten wiederherstellen
Führen Sie diese Abfrage aus, um neue Tabellendaten zu entfernen:
ALTER TABLE example_table DISCARD TABLESPACE;
Dadurch werden Verbindungen zwischen der neuen .frm
entfernt Datei und die (neue, leere) .idb
Datei. Entfernen Sie auch die .idb
Datei im Ordner.
Legen Sie dann die alte .idb
ab Datei in den neuen Ordner, z. B.:
cp backup/example_table.ibd <path>/example_table.idb
Stellen Sie sicher, dass die Datei .ibd
Dateien können von mysql
gelesen werden Benutzer, z. indem Sie chown -R mysql:mysql *.ibd
ausführen im Ordner.
Führen Sie diese Abfrage aus, um alte Daten zu importieren:
ALTER TABLE example_table IMPORT TABLESPACE;
Dies importiert Daten aus der .idb
Datei und stellt die Daten wieder her.