InnoDBデータベースを削除するときのエラー


8

MySQLでデータベースを削除しようとしていますが、このエラーが発生するたびに

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

rootとしてもログインします。

もともとは、再作成できない破損したテーブルがあったため、データベースを再作成することにしました。テーブルごとにinnodbファイルがありますが、それが重要かどうかはわかりません。

このデータベースを削除するにはどうすればよいですか?

回答:


10

データベースは削除できません。

問題はテーブルが破損していることです。必ずしも.ibdファイルである必要はありません。おそらく、ibdata1内のデータディクショナリエントリです(ibdata1の図解を参照)。

私はこれについて書き戻しましたMar 02, 2012InnoDBテーブルSELECTがエラー2006(HY000)を返します:MySQLサーバーが停止しました(停電後)

退屈ですが、壊れたデータベースに他のテーブルを保存する方法は次のbad_dbとおりです。

ステップ01) USE bad_db

ステップ02)のSELECT COUNT(1) FROM tablename;すべてのテーブルに対して実行しますbad_db。カウントを実行しようとしたときにmysqldをクラッシュさせないすべてのテーブル名を収集します。

ステップ03)mysqldump -u... -p... bad_db table1 table2 ... tableN > bad_db_goodtables.sql mysqldをクラッシュさせなかったすべてのテーブルに対して実行します。

別のデータベース名を使用する場合は、bad_db_goodtables.sqlその新しいデータベースにリロードしてください。

データベースを同じ名前にする必要がある場合は、悪いニュース!!! ibdata1をオーバーホールします。さらにステップがあります:

ステップ04)mysqldumpは他のすべてのデータベースを個別のダンプファイルにダンプします

ステップ05)InnoDBインフラストラクチャのクリーンアップを実行します(私のOct 29, 2010StackOverflowポストを参照

ステップ06)他のすべてのmysqldumpsの適切なデータベースをリロードします。

試してみる !!!


ロランドに感謝します!素晴らしい返信。そのdbを修復する方法があったらいいのに。同じ名前にしたいですか:)
giorgio79

私はしばらくの間MySQLを実行していましたが、先日初めて説明がありました。
webLacky3rdClass 2013

1
データベースをドロップできず、クリーンアップのステップ#2ですべてのデータベースをドロップする場合、どのようにしてInnoDBインフラストラクチャクリーンアップを実行できますか?
バンサー2014

おそらくまれな状況ですが、バックグラウンドジョブとしてダンプを復元しているときにこれが発生しました。親端末が停止し、復元接続が終了するまでデータベースをドロップできませんでした。
STW
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.