NucleusでmySQLエラー発生 (errno: 145)

 Nucleusをブラウザでアクセスすると、このようなエラーがある日発生。

 

mySQL error with query SELECT i.inumber as itemid, i.ititle as title, i.ibody as body, m.mname as author, m.mrealname as authorname, i.itime, i.imore as more, m.mnumber as authorid, m.memail as authormail, m.murl as authorurl, c.cname as category, i.icat as catid, i.iclosed as closed FROM nucleus_item as i, nucleus_member as m, nucleus_category as c WHERE i.iblog=1 and i.iauthor=m.mnumber and i.icat=c.catid and i.idraft=0 and i.itime<="2007-11-04 21:12:24" ORDER BY i.itime DESC LIMIT 0,15: Can't open file: 'nucleus_item.MYD' (errno: 145)

 

以下、復旧作業。

■nucleus_itemテーブルを修復・復旧する

エラーメッセージをよく見ると、

FROM nucleus_item ... とあるので、とりあえず、nucleus_itemを修復する。このテーブルが正常であれば、nucleus_member, nucleus_category も修復・復旧する。

 

テーブルを検査、修復、最適化するには myisamchkコマンドを利用する。(ISAM型テーブルの場合は isamchkコマンド)

以下、rootユーザーで検査を実行する。

# myisamchk /path/to/database_dir/nucleus/nucleus_item.MYI

 

修復と最適化を行うために、-rオプションを与えて実行する。

# myisamchk -r /path/to/database_dir/nucleus/nucleus_item.MYI

 

-rオプションでもエラーが発生する場合は、-oオプションを使用して修復を試みる。

 

MySQLが動いているときに実行して問題なかったが、なるべく、

・mysqldを停止しているとき。

・mysqldに --enable-lockingオプションを指定して実行しているとき。

にmyisamchkを使用してテーブルを検査、修復することをお勧めする。