mysqlでカラムが削除できない「Incorrect key file」→ ディスク容量不足だった

この記事について

環境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
タイトルとURLをコピーしました