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
.frmbestanden met behulp vanmysqlfrmcommando: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.