MySQLのテーブルが壊れた。Incorrect keyとかCorruptとかエラーメッセージが出たのでrepairテーブルとかmyisamchkとか色々修復するべく試したがどうやっても直ってくれない。直ることは直るがデータをinsertしようとしたらまたエラーが出てその繰り返し。インデックスのキー位置と実際にテーブルに存在しているレコード数が一致していないのが原因の模様。実際にselect count(*) とかやって見た件数と修復時に表示される件数との間に差が生じているのを確認した。最後の手段として、
- show create table targetTable でテーブル定義をメモ
- 対象のテーブルデータを select * into outfile ‘/tmp/data.txt’ from targetTable として出力する。
- drop table targetTable としてテーブル削除
- create table targetTable (略 としてテーブルを再作成
- load data infile ‘/tmp/data.txt’ into table targetTable としてデータを流し込む
という手順でやってみて、流石にこれでもエラーが出るようならお手上げだと思っていたがなんとか復旧した。