J'ai extrait le répertoire de données de mysql à partir d'une sauvegarde et j'ai besoin d'obtenir le schéma d'une ancienne table, mais c'est une sauvegarde à partir d'une autre machine.
J'ai lu un bon nombre de tutoriels aujourd'hui sur la façon de le faire, mais à chaque fois, cela semble échouer ou je dois réinstaller mysql parce que mysql se bloque ou se bloque. J'ai essayé ce qui suit:
.frm
fichierJ'ai essayé dans différentes commandes et combinaisons.
Existe-t-il un outil externe pouvant extraire le schéma du .frm
fichier? Je peux voir les noms des colonnes si j'ouvre le fichier. J'ai jeté un œil mais je n'arrive pas à trouver quoi que ce soit qui me permette de le faire.
Merci d'avance.
Chez TwinDB, nous avons construit une interface Web pour mysqlfrm
. C'est gratuit et facile à utiliser.
Pour récupérer la structure de la table, il vous suffit de télécharger le fichier .frm.
Voici les étapes. 1. Ouvrez https://recovery.twindb.com/ . Cliquez sur "Récupérer la structure"
Dans le sous-menu suivant, cliquez sur "à partir du fichier .frm"
Dans la vue suivante, cliquez sur "Parcourir" et sélectionnez un fichier .frm sur un disque local. Cliquez sur "Télécharger"
Il est également possible de télécharger une archive avec un tas de fichiers .frm. Le site les récupérera complètement.
J'ai déjà répondu à des questions comme celle-ci
Dec 21, 2011
: Compression de table dans InnoDB?Feb 03, 2012
: Comment récupérer la structure d'une table MySQL à partir de fichiers FRMApr 23, 2012
: restaurer la table à partir des fichiers .frm et .ibd?J'ai fait référence à un blog de Chris Calendar sur la connexion .ibd
fichiers dans le dictionnaire de données.
Si vous n'avez pas le .ibd
de même que .frm
, il est probable que MySQL fonctionnait avec innodb_file_per_table off. Veuillez vous référer au Feb 03, 2012
poste à ce sujet. Si c'est Linux, assurez-vous d'exécuter
cd /var/lib/mysql
chown -R mysql:mysql *
avant de démarrer mysql.
Essaie !!!
Au bas de ce dernier blog, il est écrit:
Ok, je suis accro! Où peux-je le recevoir?
L'utilitaire de lecture .frm fait partie de la nouvelle version alpha 1.3.0 disponible en téléchargement séparé sur http://dev.mysql.com/downloads/tools/utilities/ . Choisissez simplement le référentiel de plateforme ou le référentiel source et téléchargez-le.
Nous apprécions vos commentaires et espérons que cet utilitaire vous aidera à étendre votre boîte à outils de diagnostic et de récupération.
J'ai de bonnes nouvelles. J'ai installé la version Windows des utilitaires MySQL. J'ai testé le programme mysqlfrm à partir de la ligne de commande. J'ai testé l'obtention du .frm
informations de user.frm dans le schéma mysql. Voici ce que j'ai obtenu:
C:\MySQL_5.6.10\data\mysql>mysqlfrm --server=root:rootpassword@localhost mysql:user.frm --port=3307
# Source on localhost: ... connected.
# Starting the spawned server on port 3307 ... done.
# Reading .frm files
#
# Reading the user.frm file.
#
# CREATE statement for user.frm:
#
CREATE TABLE `mysql`.`user` (
`Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
`User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
`Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
`Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
`ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
`ssl_cipher` blob NOT NULL,
`x509_issuer` blob NOT NULL,
`x509_subject` blob NOT NULL,
`max_questions` int(11) unsigned NOT NULL DEFAULT '0',
`max_updates` int(11) unsigned NOT NULL DEFAULT '0',
`max_connections` int(11) unsigned NOT NULL DEFAULT '0',
`max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
`plugin` char(64) COLLATE utf8_bin DEFAULT '',
`authentication_string` text COLLATE utf8_bin,
`password_expired` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global privileges'
#...done.
C:\MySQL_5.6.10\data\mysql>
Ça marche vraiment. La base de données fonctionne sur mon ordinateur de bureau en utilisant le port 3306. J'ai dû donner 3307 comme port pour exécuter un processus généré.
Je pourrais déplacer le .frm
d'une boîte Linux vers la machine Windows et faites de même.
Essaie !!!