この記事について
| 環境 | mysql(InnoDB)+ phpmyadmin |
|---|---|
| 目的 | エラーが出て削除できないカラムを削除する |
| 結果 | ディスク使用率99%が原因。不要テーブルを削除したらエラーが出なくなった |
つまずきポイント要約
- 「Incorrect key file」はデータ破損だけでなくディスク容量不足でも出る
- ALTER TABLE はテーブルを内部でコピーするので、テーブルと同容量以上の空きが必要
事象
mysqlでカラムを削除しようとしたら、エラーが出て削除できなかった。
phpmyadmin で削除を実行すると以下のエラー
#1034 - 表'テーブル名'の索引ファイル(key file)の内容が不正です。修復を試行してください。
指示通り phpmyadmin で修復を試行するも、innodb では修復できないという内容が返ってきて変化なし。
ターミナルから削除してみるもやはりエラー。
エラー内容
Incorrect key file for table~
原因
データの破損時に出るエラーらしいが、ディスク容量不足でも起こるとわかった。
カラムを削除するとき ALTER TABLE ~ が実行されるらしいが、このSQLは対象のテーブルを内部でコピーするので、テーブルと同じ容量以上の空きが必要らしい。
mysqlの空き容量を調べる。
df -h /var/lib/mysql;
結果
Filesystem Size Used Avail Use% Mounted on
/dev/vda3 97G 90G 1.9G 99% /
容量を99%利用していた。
対処
不要テーブルを削除したらエラーは出なくなった。
念のため、データが破損していないかのエラーチェックも行った。
check table テーブル名 quick
