xrea.com サーバの MySQL の MyISAM テーブルが壊れたら

オープンソースCMS nucleus のページを閲覧していると、大量に下記のようなエラーが・・・。

mySQL error with query SELECT COUNT(*) FROM nucleus_comment as c WHERE c.citem=****: Can't open file: 'nucleus_comment.MYI'. (errno: 145)

どうやら MySQLMyISAM のテーブル nucleus_comment のインデックスファイルが壊れた模様。


MyISAM テーブルが壊れたら MySQL サーバを停止して、myisamchk を実行するのが定番なのだが、何せ共用サーバの1ユーザなので MySQL サーバを停止するなどできない。


仕方なく、MySQL サーバを動作させたまま、xrea.com のサーバに SSH でログインして myisamchk を実行しようとするも、「.MYI」ファイルに対して「アクセス権限がないよ」とはじかれる。


最悪、サポートに連絡して myisamchk を実行してもらうしかないかと思っていたが、しばし検索してみると

REPAIR TABLE nucleus_comment;

という SQL 文である程度修復してくれることが判明。REPAIR TABLE 構文


この SQLphpmyadmin から実行するもよし、SSH でログインしてから mysql に接続し、コマンドラインから実行してもよしだ。修復にはしばらく時間を要するようだ。


修復した nucleus_comment テーブルをみて驚いた。ものすごいコメント SPAM である。その数 65,000件以上。これらのコメントを全て削除し、登録ユーザのみがコメントできるように nucleus の設定を変更して事なきを得た。