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
mysqlfrm
kommando i kommandoprompt (cmd). -
For det andet skal du hente SQL-forespørgslerne fra
.frm
filer ved hjælp afmysqlfrm
kommando: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.