J'ai restauré la table uniquement à partir de .frm
et .idb
fichiers.
Obtenir la requête SQL pour créer les tables
Si vous connaissez déjà le schéma de vos tables, vous pouvez ignorer cette étape.
-
Tout d'abord, installez MySQL Utilities .Ensuite, vous pouvez utiliser
mysqlfrm
commande dans l'invite de commande (cmd). -
Deuxièmement, récupérez les requêtes SQL à partir de
.frm
fichiers utilisantmysqlfrm
commande :mysqlfrm --diagnostic <path>/example_table.frm
Ensuite, vous pouvez obtenir la requête SQL pour créer la même table structurée. Comme ceci :
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;
Créer les tableaux
Créez la ou les tables à l'aide de la requête SQL ci-dessus.
Si les anciennes données existent toujours, vous devrez peut-être d'abord supprimer la base de données et les tables respectives. Assurez-vous d'avoir une sauvegarde des fichiers de données.
Restaurer les données
Exécutez cette requête pour supprimer les nouvelles données de table :
ALTER TABLE example_table DISCARD TABLESPACE;
Cela supprime les connexions entre le nouveau .frm
fichier et le (nouveau, vide) .idb
dossier. Supprimez également le .idb
fichier dans le dossier.
Ensuite, mettez l'ancien .idb
fichier dans le nouveau dossier, par exemple :
cp backup/example_table.ibd <path>/example_table.idb
Assurez-vous que le .ibd
les fichiers peuvent être lus par le mysql
utilisateur, par ex. en exécutant chown -R mysql:mysql *.ibd
dans le dossier.
Exécutez cette requête pour importer d'anciennes données :
ALTER TABLE example_table IMPORT TABLESPACE;
Cela importe les données du .idb
fichier et restaurera les données.