Récupérer une base de données MySQL avec les fichiers *.ibd et *.frm
Il peut arriver dans la vie d'un développeur qu'il perde
malencontreusement les données d'une table et qu'il ne lui reste
plus que des fichiers *.ibd et *.frm pour se consoler.
Heureusement, il existe une technique pour recouvrer sa base de
données avec toutes ses tables et, bien entendu, les données.
Avant de débuter ce tutoriel, prenez l'ensemble de vos fichier *.frm et *.ibd et copier afin d'éviter de predre vos précieuses données au cas où une étape échouerait.
La première consiste à recréer la table. Pour cela, nous allons nous servir d'un utilitaire fourni par MySQL et appelé "mysqlfrm.exe". Pour commencer, ouvrez une console ("cmd.exe") en mode administrateur. Placez-vous dans le dossier où se trouve l'exécutable précité puis la commande suivante :
mysqlfrm --server=root:motdepasse@localhost:3306 C:\wamp\bin\mysql\mysql5.6.17\data\nom_de_votre_bdd\nom_de_votre_table.frm --port=3310
En lançant cette commande, la console va vous afficher la commande SQL permettant la création de votre table (elle commencera par "CREATE TABLE ...") avec toutes les colonnes qui s'y trouvaient originellement. Copiez cette commande SQL, créez votre base de données et collez-la avant de l'exécuter. Votre table devrait se créer sans aucun problème. Vous devrez répéter cette opération pour l'ensemble de vos tables.
Récupération des données
Maintenant que vos tables sont prêtes, il va falloir les remplir. Les opérations qui suivent doivent faites pour toutes les tables à restaurer. Commencez par lancer la requête SQL suivante :
ALTER TABLE `nom_de_votre_table` DISCARD TABLESPACE;
Prenez le fichier *.ibd de la première table et copiez-le dans le dossier "C:\wamp\bin\mysql5.6.17\nom_de_votre_bdd\". Pour finir, lancez la requête suivante :
ALTER TABLE `nom_de_votre_table` IMPORT TABLESPACE;
Et là, le miracle devrait s'opérer ; en ouvrant la table vous devrez retrouver toutes vos données !
Resources utiles :
3 novembre 2015 - Wakonda - SQL
Rechercher
Tags
Articles récents
- Quel est le but de l'attribut "role" en HTML ?
- Changer la couleur de l'espace réservé (placeholder)
- Attention à cet email d’arnaque !
- Supprimer un fichier d'un référentiel Git sans le supprimer du système de fichiers local
- JS - Récupérer le dernier élément d'un tableau
- JS - Prévisualiser une image avec son upload
- PHP - Convertir une chaîne de caractères en un booléen
- PHP : Vérifier si une session a déjà été démarrée
- Créer un APK ou un AAB en ligne de commandes
- L'opérateur !! en Javascript