MySQL
mediawiki

MediaWikiで検索時にデータベースクエリのエラーが発生する

MediaWikiのバージョン: 1.24.1

検索すると下記のエラーメッセージが表示され検索できなくなってしまった。

データベース クエリのエラーが発生しました。 これはソフトウェアのバグである可能性があります。

調べた所、下記をLocalSettings.phpの末尾に追加すると、実際のクエリやエラーメッセージが表示されるよう。

$wgShowSQLErrors = true;

参照: https://www.mediawiki.org/wiki/Manual:$wgShowSQLErrors/ja

これを使いして再度検索を実行すると、下記のエラーが表示される。

  • クエリ:  SELECT page_id,page_namespace,page_title FROM page,searchindex WHERE (page_id=si_page) AND ( MATCH(si_title) AGAINST('+aaau800 ' IN BOOLEAN MODE) ) AND page_namespace = '0' LIMIT 20
  • 関数: SearchMySQL::searchInternal
  • エラー: 145 Table './[DB名]/searchindex' is marked as crashed and should be repaired

これで調べるとまとめてくださっている方がいた。

Mediawiki/トラブルシューティング

下記を実行し、mysqldを再起動することで修正できた。

$ cd /var/lib/mysql/[DB名]
$ myisamchk -r searchindex.MYI

上のLocalSettings.phpに仕込んだ行を削除しサービスを再起動して完了。