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
mysqlfrmcommande dans l'invite de commande (cmd). -
Deuxièmement, récupérez les requêtes SQL à partir de
.frmfichiers utilisantmysqlfrmcommande :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.