web-dev-qa-db-ja.com

エラーのある十分なディスク領域:「テーブル 'table_name'の1034不正なキーファイル;修復してみてください」

次のクエリで1.6 GBのInnoDBテーブルを変更しようとしています。

ALTER TABLE `table_name` ADD `field_id` int(11) unsigned DEFAULT NULL

クエリは次のエラーで失敗します。

1034 Incorrect key file for table 'table_name'; try to repair it

このトピックのほぼすべてのスレッド(SOなど)は、tmpdirの領域不足が原因であると示唆しています。

これは多くの人にとって問題であるように見えますが、私たちのシステムではそうではないようです。

tmpdir/tmp

enter image description here

/tmpは完全ではありません:

enter image description here

私は完全に行き詰まっています。考えは?

2
rinogo

さて、私は大きなダミーです。 @a_vladによって要求された方法でデータベースのサイズを確認しようとしたところ、以前に間違ったサーバーの/tmpの空き領域を確認していたことに気付きました

ああ。正しいサーバーの/tmpの空き領域を追跡しながらコマンドを再度実行すると、空き領域の不足が実際に問題であることがわかります。

...そして、私が今食べている控えめなパイのスライスは次のとおりです。

enter image description here

7
rinogo

私は違うでしょう。 MyISAMを使用する場合、ほとんどすべての正常でないシャットダウンにより、一部のテーブルで「修復」が必要になります。これがInnoDBに切り替える重要な理由です。

CHECK TABLE `table_name`;

それはおそらく修理が必要だと言うでしょう、それから

REPAIR TABLE `table_name`;

その後、ALTERを続行できます。

0
Rick James