Ik heb de tabel alleen hersteld van .frm
en .idb
bestanden.
Verkrijg de SQL-query om de tabellen te maken
Als u het schema van uw tabellen al kent, kunt u deze stap overslaan.
-
Installeer eerst MySQL Utilities .Dan kunt u
mysqlfrm
. gebruiken opdracht in opdrachtprompt (cmd). -
Ten tweede, haal de SQL-query's op van
.frm
bestanden met behulp vanmysqlfrm
commando:mysqlfrm --diagnostic <path>/example_table.frm
Vervolgens kunt u de SQL-query krijgen om dezelfde gestructureerde tabel te maken.Zoals dit:
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;
Maak de tabellen
Maak de tabel(len) aan met behulp van de bovenstaande SQL-query.
Als de oude gegevens nog steeds bestaan, moet u mogelijk eerst de respectieve database en tabellen verwijderen. Zorg ervoor dat je een back-up hebt van de gegevensbestanden.
Herstel de gegevens
Voer deze query uit om nieuwe tabelgegevens te verwijderen:
ALTER TABLE example_table DISCARD TABLESPACE;
Dit verwijdert verbindingen tussen de nieuwe .frm
bestand en de (nieuwe, lege) .idb
het dossier. Verwijder ook de .idb
bestand in de map.
Plaats dan de oude .idb
bestand naar de nieuwe map, bijv.:
cp backup/example_table.ibd <path>/example_table.idb
Zorg ervoor dat de .ibd
bestanden kunnen worden gelezen door de mysql
gebruiker, bijv. door chown -R mysql:mysql *.ibd
. uit te voeren in de map.
Voer deze query uit om oude gegevens te importeren:
ALTER TABLE example_table IMPORT TABLESPACE;
Dit importeert gegevens uit de .idb
bestand en zal de gegevens herstellen.