クラッシュした Innodb テーブルを削除/削除できません。次のエラーが表示されます。
エラー 1051 (42S02): 不明なテーブル 'アカウント'
そして、それを作成したい場合、次のエラーが発生します。
エラー 1005 (HY000): テーブル 'アカウント' を作成できません (errno: -1)
これは、偶発的な電源障害の後にサーバーで発生します。
よろしく
この問題はhttp://www.randombugs.com/linux/crash-innodb-table.htmlでも見つかりました。これは、ibdataファイルを削除してmysqlを再起動するだけで解決できるようです。とにかく、バックアップがない場合、これは本当に解決策ではありません。
テーブルを削除する前に外部キー制約をオフにすると効果がありますか?
set foreign_key_checks=0;
drop table <table>;
set foreign_key_checks=1;
似たようなバグレポートがありますが、同じ問題かどうかはわかりません:
http://bugs.mysql.com/bug.php?id=5784
そうでない場合は、 mysqlcheckを試すことができます。
mysqlcheck -u root -p <dbname> --auto-repair --check --optimize --databases
データベースに最適なオプションについては、ドキュメントを確認する必要があります。このコマンドの実行中にテーブルに設定されたロックに関するドキュメントの最初の段落のコメントに注意してください。
私の推測では、InnoDB はロードされていないので (SHOW ENGINES をチェックしてください)、最初にその問題を修正するまで、ドロップすることはできません。
通常、リカバリ モード 3 で InnoDB を起動し、必要なものをすべて削除してから、シャットダウンしてリカバリ モード設定を削除します。
http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html
私のために働いた簡単な解決策。
テーブルを削除してみてください。
テーブル tableOne を削除します。
次のエラーが表示されます。
ERROR 1051 (42S02): Unknown table 'tableOne'
そのテーブルの create ステートメントを別のデータベースからコピーするか、書き込みます。
CREATE TABLE tableOne
( ID
int(11) NOT NULL, LOCKED
tinyint(1) NOT NULL) ENGINE=InnoDB;
成功
Query OK, 0 rows affected (0.03 sec)
テーブルをドロップ
drop table tableOne;
成功
Query OK, 0 rows affected (0.01 sec)