Jeg gendannede tabellen kun fra .frm og .idb filer.
Hent SQL-forespørgslen for at oprette tabellerne
Hvis du allerede kender skemaet for dine tabeller, kan du springe dette trin over.
-
Installer først MySQL Utilities .Så kan du bruge
mysqlfrmkommando i kommandoprompt (cmd). -
For det andet skal du hente SQL-forespørgslerne fra
.frmfiler ved hjælp afmysqlfrmkommando:mysqlfrm --diagnostic <path>/example_table.frm
Så kan du få SQL-forespørgslen til at oprette samme strukturerede tabel. Sådan:
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;
Opret tabellerne
Opret tabellen/tabellerne ved hjælp af ovenstående SQL-forespørgsel.
Hvis de gamle data stadig eksisterer, skal du muligvis slette den respektive database og tabeller først. Sørg for at have en sikkerhedskopi af datafilerne.
Gendan dataene
Kør denne forespørgsel for at fjerne nye tabeldata:
ALTER TABLE example_table DISCARD TABLESPACE;
Dette fjerner forbindelser mellem den nye .frm fil og (ny, tom) .idb fil. Fjern også .idb fil i mappen.
Indsæt derefter den gamle .idb fil i den nye mappe, f.eks.:
cp backup/example_table.ibd <path>/example_table.idb
Sørg for, at .ibd filer kan læses af mysql bruger, f.eks. ved at køre chown -R mysql:mysql *.ibd i mappen.
Kør denne forespørgsel for at importere gamle data:
ALTER TABLE example_table IMPORT TABLESPACE;
Dette importerer data fra .idb fil og vil gendanne dataene.