Erreur lors de la suppression de la base de données InnoDB

8

J'essaie de supprimer une base de données dans mysql, mais chaque fois que j'obtiens cette erreur

ERROR 2013 (HY000): Lost connection to MySQL server during query

même connecté en tant que root.

À l'origine, j'avais une table corrompue que je ne pouvais pas recréer, c'est pourquoi j'ai décidé de recréer la base de données. J'ai un fichier innodb par table, je ne sais pas si cela compte.

Comment puis-je supprimer cette base de données?

giorgio79
la source

Réponses:

10

Je crains que vous ne puissiez pas supprimer la base de données.

Le problème vient de la table qui est corrompue. Ce n'est pas nécessairement le .ibdfichier. Il s'agit plus que probablement de l'entrée du dictionnaire de données dans ibdata1 ( voir la représentation graphique d'ibdata1 ).

J'ai écrit à ce sujet sur Mar 02, 2012: La table InnoDB SELECT renvoie ERREUR 2006 (HY000): Le serveur MySQL est parti (après une panne de courant)

Bien que fastidieux, voici ce que vous pouvez faire pour enregistrer les autres tables dans cette base de données corrompue bad_db:

ÉTAPE 01) USE bad_db

ÉTAPE 02) Exécutez SELECT COUNT(1) FROM tablename;pour chaque table bad_db. Collectez tous les noms de table qui ne plantent pas mysqld lorsque vous essayez d'exécuter le comptage.

ÉTAPE 03) Exécutez mysqldump -u... -p... bad_db table1 table2 ... tableN > bad_db_goodtables.sql pour toutes les tables qui n'ont pas planté mysqld.

Si vous prévoyez d'utiliser un nom de base de données différent, rechargez-le bad_db_goodtables.sqldans cette nouvelle base de données.

Si vous avez besoin que la base de données porte le même nom, MAUVAISES NOUVELLES !!! Vous devrez réviser ibdata1. Il y a plus d'étapes:

ÉTAPE 04) mysqldump toutes les autres bases de données dans des fichiers de vidage séparés

ÉTAPE 05) Effectuer le nettoyage de l'infrastructure InnoDB ( Voir mon article Oct 29, 2010StackOverflow )

ÉTAPE 06) Rechargez toutes les autres bonnes bases de données mysqldumps.

Essaie !!!

RolandoMySQLDBA
la source
Rolando très apprécié! Réponse fantastique. Je souhaite qu'il y ait un moyen de réparer cette base de données. Aurait aimé que ce soit le même nom :)
giorgio79
J'ai exécuté MySQL pendant un certain temps maintenant, si cela s'était produit la première fois l'autre jour, merci pour l'explication.
webLacky3rdClass
1
Comment pouvez-vous effectuer le nettoyage de l'infrastructure InnoDB si vous ne pouvez pas supprimer la base de données et que l'étape 2 du nettoyage consiste à supprimer toutes les bases de données?
danseur du
Probablement une situation rare, mais cela s'est produit lors de la restauration d'un vidage en tant qu'emploi d'arrière-plan. Le terminal parent est mort et la base de données n'a pas pu être supprimée tant que la connexion de restauration n'a pas été supprimée.
STW