J'ai un MySQL InnoDB qui contient tous les fichiers de table de base de données, mais MySQL ne les voit pas et ne les charge pas.
Le problème est arrivé parce que je supprimé ces trois fichiers: ibdata1
, ib_logfile0
etib_logfile1
parce que j'avais des problèmes avec le démarrage de mysql, et ce que j'ai lu était de les supprimer car MySQL va juste les régénérer (je sais que j'aurais dû les sauvegarder mais pas).
Que puis-je faire pour que MySQL revoie les tables?
about_member.frm site_stories.frm
about_member.ibd site_stories.ibd
db.opt stories.frm
FTS_00000000000000bb_BEING_DELETED_CACHE.ibd stories.ibd
FTS_00000000000000bb_BEING_DELETED.ibd story_comments.frm
FTS_00000000000000bb_CONFIG.ibd story_comments.ibd
FTS_00000000000000bb_DELETED_CACHE.ibd story_likes.frm
FTS_00000000000000bb_DELETED.ibd story_likes.ibd
FTS_00000000000000f5_BEING_DELETED_CACHE.ibd story_tags.frm
FTS_00000000000000f5_BEING_DELETED.ibd story_tags.ibd
FTS_00000000000000f5_CONFIG.ibd story_views.frm
FTS_00000000000000f5_DELETED_CACHE.ibd story_views.ibd
FTS_00000000000000f5_DELETED.ibd story_view_totals.frm
member_favorites.frm story_view_totals.ibd
member_favorites.ibd tags.frm
members.frm tags.ibd
members.ibd
Réponses:
Voici pourquoi MySQL ne peut pas voir ces fichiers: L'espace disque logique système (ibdata1) possède un dictionnaire de données spécifique au moteur de stockage qui permet à InnoDB de cartographier l'utilisation potentielle de la table:
Le déplacement des tables InnoDB d'un endroit à un autre nécessite des commandes telles que
Voici une partie de la documentation MySQL 5.5 expliquant ce qui doit être pris en compte
Compte tenu de ces mises en garde et protocoles, voici un plan d'action suggéré
Pour cet exemple, essayons de restaurer la
tags
table dans lamydb
base de donnéesÉTAPE 1
Assurez-vous d'avoir des sauvegardes de ceux-ci
.frm
et des.ibd
fichiers dans/tmp/innodb_data
ÉTAPE 2
Obtenez l'
CREATE TABLE tags
instruction et exécutez-la en tant queCREATE TABLE mydb.tags ...
. Assurez-vous que c'est exactement la même structure que l'originaltags.frm
ÉTAPE 3
Supprimer le vide en
tags.ibd
utilisant MySQLÉTAPE 4
Apportez la copie de sauvegarde de
tags.ibd
ÉTAPE # 5
Ajouter une
tags
table au dictionnaire de données InnoDBÉTAPE 6
Testez l'accessibilité de la table
Si vous obtenez des résultats normaux, félicitations pour l'importation d'une table InnoDB.
ÉTAPE 7
À l'avenir, veuillez ne pas supprimer ibdata1 et ses journaux
Essaie !!!
J'ai discuté de choses comme ça avant
Apr 23, 2012
: MySQL: comment restaurer une table stockée dans un fichier .frm et .ibd?Sep 28, 2011
: Comment récupérer une table InnoDB dont les fichiers ont été déplacésCAVEAT
Et si vous ne connaissez pas la structure de la table du
tags
?Il existe des outils pour obtenir l'instruction CREATE TABLE en utilisant simplement le
.frm
fichier. J'ai également écrit un article à ce sujet: Comment extraire le schéma de table à partir du fichier .frm? . Dans ce post, j'ai copié un fichier .frm sur une machine Windows à partir d'une boîte Linux, j'ai exécuté l'outil Windows et obtenu laCREATE TABLE
déclaration.la source
weblyize
tags
la création, j'obtiens: ERREUR 1813 (HY000): Espace disque logique pour la table ' . 'existe. Veuillez JETER l'espace disque logique avant d'importer. Alors j'essaie d'abord d'exécuter le tablespace alter et d'obtenir cette erreur: ERREUR 1146 (42S02): la table 'weblyize.tags' n'existe pas . Que puis-je faire?CREATE TABLE ...
puis suivi vos étapes! Vous m'avez évité d'avoir à les réécrire à 100% à partir de zéro! Il n'a pas importé de clés étrangères mais ça va, je peux le faire moi-même! Merci encore!J'ai la même situation, impossible de supprimer ou de créer un nom de tbl spécifique. Ma procédure de correction est la suivante:
Arrêtez MySQL.
Supprimez ib_logfile0 et ib_logfile1.
Supprimez les fichiers tblname. AVERTISSEMENT: CECI SUPPRIMERA DE MANIÈRE PERMANENTE VOS DONNÉES
Démarrez MySQL.
la source
J'ai eu ce problème également. J'ai supprimé
ibdata1
accidentellement et toutes mes données ont été perdues.Après 1 à 2 jours de recherche dans Google et SO, j'ai finalement trouvé une solution qui m'a sauvé la vie (j'avais tellement de bases de données et de tableaux avec d'énormes enregistrements).
prendre une sauvegarde de
/var/lib/mysql
récupérer le schéma de table à partir d'un
.frm
fichier avec dbsake (il y avait une autre option! mysqlfrm . mais cela n'a pas fonctionné pour moi)créer une nouvelle table (avec un nouveau nom) avec le schéma exporté.
supprimer les nouvelles données de table avec cette commande:
/var/lib/mysql/database-name
et s'il existe des données (.ibd
fichier) pour l'ancienne table, supprimez-les.la source