5

クラッシュした Innodb テーブルを削除/削除できません。次のエラーが表示されます。

エラー 1051 (42S02): 不明なテーブル 'アカウント'

そして、それを作成したい場合、次のエラーが発生します。

エラー 1005 (HY000): テーブル 'アカウント' を作成できません (errno: -1)

これは、偶発的な電源障害の後にサーバーで発生します。

よろしく

4

4 に答える 4

4

この問題はhttp://www.randombugs.com/linux/crash-innodb-table.htmlでも見つかりました。これは、ibdataファイルを削除してmysqlを再起動するだけで解決できるようです。とにかく、バックアップがない場合、これは本当に解決策ではありません。

于 2011-02-25T08:36:18.627 に答える
3

テーブルを削除する前に外部キー制約をオフにすると効果がありますか?

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

データベースに最適なオプションについては、ドキュメントを確認する必要があります。このコマンドの実行中にテーブルに設定されたロックに関するドキュメントの最初の段落のコメントに注意してください。

于 2010-07-10T11:01:08.527 に答える
1

私の推測では、InnoDB はロードされていないので (SHOW ENGINES をチェックしてください)、最初にその問題を修正するまで、ドロップすることはできません。

通常、リカバリ モード 3 で InnoDB を起動し、必要なものをすべて削除してから、シャットダウンしてリカバリ モード設定を削除します。

http://dev.mysql.com/doc/refman/5.0/en/forcing-recovery.html

于 2010-07-24T14:27:54.507 に答える
1

私のために働いた簡単な解決策。

  1. テーブルを削除してみてください。

    テーブル tableOne を削除します。

次のエラーが表示されます。

ERROR 1051 (42S02): Unknown table 'tableOne'
  1. そのテーブルの create ステートメントを別のデータベースからコピーするか、書き込みます。

    CREATE TABLE tableOne( IDint(11) NOT NULL, LOCKEDtinyint(1) NOT NULL) ENGINE=InnoDB;

成功

Query OK, 0 rows affected (0.03 sec)
  1. テーブルをドロップ

    drop table tableOne;  
    

成功

    Query OK, 0 rows affected (0.01 sec) 
于 2016-02-18T17:37:47.430 に答える