web-dev-qa-db-fra.com

Comment récupérer la structure de table MySQL à partir de fichiers FRM

Ce que j'ai appris de Google Recherche:

Avec des tables MyISAM, vous pouvez simplement copier les fichiers FRM, MYD et MYI. Dans le dossier pour la DB, j'essaie de récupérer, il n'y a que des fichiers FRM et un fichier "db.opt", ils ne doivent donc pas être des tables myisam.

Situation:

Mon ordinateur s'est écrasé, mais les données sont toujours sur le disque dur. Le serveur MySQL 5.5.8 a été installé avec WAMP sur l'ordinateur écrasé.

J'ai essayé de copier tout le dossier de données, mais MySQL crée uniquement une base de données vierge - aucune tables.

Il y a un fichier FRM pour chacune des tables que je souhaite récupérer. Cependant, ils ne sont pas des fichiers texte lisibles. Y a-t-il un moyen de récupérer la structure de la table à partir de ces fichiers?

Ce post https: //stactverflow.com/a/7688688/1188138 indique que la structure est en fait dans ces fichiers, mais ne fournit pas de méthode de récupération.

Merci beaucoup - j'ai essayé tout ce que je peux penser.

5
Steve Burke

Si vous ne voyez que les fichiers .frm, il existe une forte probabilité que le moteur de stockage utilisé était InnoDB et Innodb_File_per_Table devait être désactivé par défaut.

Si vous avez tout transféré de DataDir sur le serveur écrasé sur un autre disque sur une autre machine, vous pourrez peut-être démarrer MySQL avec ce dossier tel quel.

Par exemple, Supposons que Servera est votre serveur écrasé et Serverb est l'endroit où vous le souhaitez.

  • Installez MySQL 5.5.8 sur Serverb
  • net stop mysql sur serveurb pour vous assurer que MySQL est en panne sur Serverb
  • md C:\MySQLData sur serveurb
  • Déposez tout dans le dossier de données sur Servera en C:\mysqldata sur serveurb
  • Faire c:\mysqldata le nouveau Datadir

Ajouter ceci à my.ini sur serveurb

[mysql]
datadir=C:/MySQLData
  • C:\> del C:\MySQLData\ib_logfile* sur serveurb
  • net start mysql sur serveurb

S'il vous plaît essayez-le et dites-nous ce qui s'est passé

Mise à jour 2012-02-03 17:06 EDT

Depuis que vous avez été capable de récupérer tout maintenant faites ceci:

mysqldump -u... -p... -A -d --routines --triggers > C:\MySQLSchema.sql

Cela donnera toutes les structures de table dans l'instance MySQL.

4
RolandoMySQLDBA

Si vous avez copié les fichiers vers le nouvel emplacement, vous avez probablement copié les fichiers avec les autorisations de votre utilisateur.

MySQL aura besoin de la permission de lire/écrire dans le répertoire de données.

2
Derek Downey

À Twindb, nous avons construit une interface Web pour mysqlfrm. C'est gratuit et facile à utiliser.

Pour récupérer la structure de table à partir de laquelle vous avez juste besoin de télécharger le fichier .frm.

Voici des étapes. 1. Ouvrez https://recovery.twindb.com/ . Cliquez sur "Récupérer la structure" enter image description here

  1. Dans le sous-menu suivant, cliquez sur "Du fichier .frm" enter image description here

  2. Sur le point de vue suivant, cliquez sur "Parcourir" et sélectionnez un fichier .frm sur un disque local. Cliquez sur "Télécharger" enter image description here

  3. Attendez que ça fait la magie enter image description here

  4. Obtenez la structure récupérée. enter image description here

Il est également possible de télécharger une archive avec un tas de fichiers .frm. Le site les récupérera complètement.

0
akuzminsky