データベースエラーになった時の状況確認
データベース接続確率エラーとWordpressで表示される時の状況確認。
・インストール後やサーバー移転後ずっとエラーなのか、ある時急にエラーになったのか
→ 最初からの場合は、データベース名、ホスト名、ユーザー名、パスワード、プリフィックスなど何かしらが間違えている可能性が高い。
まずはwp-config.phpの中のデータベースの設定などを確認。
ある時を境に、急にエラーになった場合は下記確認。
・サーバー側のエラーなのか、データベースのテーブルが壊れているのか
→ サーバーがダウンしている、メンテナンス中などの場合もこのエラーが表示される場合がある。緊急でないなら数時間~1日待ってみる。
国内サーバーなら、ホスティング会社のWebサイトなどに障害状況が掲載される場合が多いのでチェック。
海外サーバーなら、カスタマーサポートにメールかチャットで連絡してみる。
データベースの異常を確認するには、phpMyAdminにログインして、テーブルが「in use」になっているかどうかを確認すれば、データベースが壊れているかはすぐに分かる。
phpMyAdminを使いたくない(使い方が分からない)人は?
蛇足だが、phpMyAdminを使いたくない人は、
wp-config.phpのどこかに
define( 'WP_ALLOW_REPAIR', true );
と記述してから
ブログURL/wp-admin/ にアクセスしてみてWordPressからDBの修復を試みる事ができる。
これで修復できればいいが、できない場合は下記へ。
phpMyAdminからのデータベース修復
サーバーの管理画面などからphpMyAdminへログイン。
テーブルで「in use」となっているものがあり、「in use」は、破損を意味している。
今回は、wp_options が死んでいる。
あと他にも、wp_commentmeta もよく死ぬ。
壊れているテーブルの左のチェックボックスを選択してから上のメニューで「Repair table」を選ぶ。
上に緑で「Your SQL query has been executed successfully」って出たので、やった!成功だ!と思いきやエラーでした。
「Not enough memory for blob at 64384 (need 16862691..」
need xxxxx の部分の数字が途方もなく大きいので、これはもうまともな手法では直せないなと理解。
このエラーが出た時は 修復(repair)では直せない。
ちなみに、シェルアクセスでコマンドを打っても同じ、当然WordPressのdefine( ‘WP_ALLOW_REPAIR’, true );で、管理画面からリペアを試みても無理だ。
データベースのバックアップの復元、それが無いならサーバー管理会社にお願いしてリストア(ロールバック)してもらう。
自分で定期的なバックアップをとっていればそれをリストアしてもいい。
データベースのバックアップなんかしてねーって場合は、サーバーの運営会社(ホスティング会社)に連絡して最新のデータベースのバックアップへ復元してもらうしかない。