MyISAMで構造にエラーが出た時の対応

MyISAMはInnodbと違ってAMIなどでスナップショットを取ると壊れることがあります。

Table '.{db_name}/dtb_order_detail_order_detail_id_seq' is marked as crashed and should be repaired

こんなメッセージがログに出るかと思います。 こうなるとSelectをするとエラーが返ってきて値を取得することができません。

myisamchk --fast {mysql}/{db_name}/dtb_order_detail_order_detail_id_seq

で壊れているチェックをすることができ、

myisamchk --recover {mysql}/{db_name}/dtb_order_detail_order_detail_id_seq

で修正できます。

MyISAMがあるか確認するには

use information_schema
select table_name, engine from tables where table_schema = '{db_name}' AND engine != 'InnoDB';

で調べられます。