次のクエリで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
:
/tmp
は完全ではありません:
私は完全に行き詰まっています。考えは?
私は違うでしょう。 MyISAMを使用する場合、ほとんどすべての正常でないシャットダウンにより、一部のテーブルで「修復」が必要になります。これがInnoDBに切り替える重要な理由です。
CHECK TABLE `table_name`;
それはおそらく修理が必要だと言うでしょう、それから
REPAIR TABLE `table_name`;
その後、ALTER
を続行できます。