Fehler beim Löschen der InnoDB-Datenbank

8

Ich versuche, eine Datenbank in MySQL zu löschen, aber jedes Mal, wenn ich diesen Fehler erhalte

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

sogar als root angemeldet.

Ursprünglich hatte ich eine beschädigte Tabelle, die ich nicht neu erstellen konnte, daher habe ich beschlossen, die Datenbank neu zu erstellen. Ich habe eine Innodb-Datei pro Tabelle, nicht sicher, ob das wichtig ist.

Wie kann ich diese Datenbank löschen?

giorgio79
quelle

Antworten:

10

Ich fürchte, Sie können die Datenbank nicht löschen.

Das Problem ist die beschädigte Tabelle. Es ist nicht unbedingt die .ibdDatei. Es ist höchstwahrscheinlich der Datenwörterbucheintrag in ibdata1 ( siehe bildliche Darstellung von ibdata1 ).

Ich schrieb darüber zurück auf Mar 02, 2012: InnoDB-Tabelle SELECT gibt FEHLER 2006 zurück (HY000): MySQL-Server ist verschwunden (nach Stromausfall)

Obwohl dies mühsam ist, können Sie Folgendes tun, um die anderen Tabellen in dieser beschädigten Datenbank zu speichern bad_db:

SCHRITT 01) USE bad_db

SCHRITT 02) Führen Sie SELECT COUNT(1) FROM tablename;für jede Tabelle in bad_db. Sammeln Sie alle Tabellennamen, die mysqld nicht zum Absturz bringen, wenn Sie versuchen, die Zählung auszuführen.

SCHRITT 03) Führen Sie mysqldump -u... -p... bad_db table1 table2 ... tableN > bad_db_goodtables.sql alle Tabellen aus, die mysqld nicht zum Absturz gebracht haben.

Wenn Sie einen anderen Datenbanknamen verwenden möchten, laden Sie ihn erneut bad_db_goodtables.sqlin diese neue Datenbank.

Wenn Sie möchten, dass die Datenbank den gleichen Namen hat, BAD NEWS !!! Sie müssen ibdata1 überholen. Es gibt weitere Schritte:

SCHRITT 04) mysqldump alle anderen Datenbanken in separate Dump-Dateien

SCHRITT 05) Führen Sie eine Bereinigung der InnoDB-Infrastruktur durch ( siehe meinen Oct 29, 2010StackOverflow-Beitrag ).

SCHRITT 06) Laden Sie alle anderen guten mysqldumps-Datenbanken neu.

Versuche es !!!

RolandoMySQLDBA
quelle
Sehr geschätzt Rolando! Fantastische Antwort. Ich wünschte, es gäbe eine Möglichkeit, diese Datenbank zu reparieren. Hätte es gerne den gleichen Namen
gehabt
Ich habe MySQL jetzt schon eine Weile ausgeführt, war dies neulich das erste Mal passiert, danke für die Erklärung.
webLacky3rdClass
1
Wie können Sie eine Bereinigung der InnoDB-Infrastruktur durchführen, wenn Sie die Datenbank nicht löschen können und Schritt 2 der Bereinigung darin besteht, alle Datenbanken zu löschen?
Bancer
Wahrscheinlich eine seltene Situation, aber ich hatte dies beim Wiederherstellen eines Dumps als Hintergrundjob. Das übergeordnete Terminal ist gestorben, und die Datenbank konnte nicht gelöscht werden, bis die Wiederherstellungsverbindung unterbrochen wurde.
STW