Database Error
データベース接続確立エラー|
急に出たときの原因と対処
公開面も管理画面も同じ英文のまま止まるときは、WordPressがデータベースへ届いていません。まず接続情報の誤りと、サーバー側の停止を切り分けてください。ファイルが勝手に変わっている気配があるときは、修復より先に改ざんの点検へ回します。
データベース接続確立エラー|急に出たとき
画面に Error establishing a database connection とだけ出る状態は、テーマの崩れやプラグインの警告とは違います。WordPressは起動の途中でデータベースへ接続できず、投稿も設定も読めないので、日本語の管理画面にも入れません。トップだけ落ちて下層は見える、という形にはなりません。同じ文言がサイト全体に出ます。
急に出たときは、直前に何をしたかを残してください。サーバーのパスワード変更、プラン変更、PHPの切り替え、引っ越し、自動バックアップの復元、管理画面での大量削除、このどれかがあるとその順で疑います。何もしていない朝に出た場合は、共用サーバーの負荷、データベースの停止、ディスク満杯、第三者による接続情報の改変を疑います。
先に公開URLを開き、管理画面のURLも開きます。両方同じエラーなら接続の問題です。管理画面だけ別のエラーなら、この記事ではなくログインできないときの切り分けです。サーバーのパネルに入れるなら、データベースの稼働と、ディスク使用量を先に見ます。パネルにも入れないときは、サーバー事業者の障害情報を見て、自分の設定をいじるのは後回しです。
ローカルのXAMPPやMAMPで同じ文言が出る場合は、MySQLが起動していないことがほとんどです。コントロール画面でデータベースを起動し、wp-config.php の DB_HOST が localhost のままかを見れば足りることが多いです。公開サイトの急な停止とは切り分けて、この記事の以降はレンタルサーバーとVPSの話に戻します。
画面を何度も再読み込みしても直る種類ではありません。キャッシュを消して一瞬戻ることがあっても、接続先が間違ったままだとまた落ちます。応急でテーマを変える、プラグインを止める、といった操作は、管理画面に入れない段階では使えません。入れるようになってから、後半のテーマとプラグインの節へ進みます。
表示が接続エラーなのに、HTMLのソースに見知らぬスクリプトや、見知らぬドメインへの転送が入っているときは、接続エラーに見せた改ざんの可能性があります。そのときは wp-config.php を直す前に、ファイルの更新日時と、見知らぬユーザーを見ます。手順はサイト改ざん・マルウェア駆除と、この記事の最後の節にあります。
データベース接続確立エラーの原因
原因は三つに寄ります。接続情報の不一致、認証情報の変更、データベース側の停止や負荷です。WordPress本体のバージョンが古いこと自体は、この英文エラーの直接原因になりにくいです。本体が古いと別の白い画面や、更新失敗は出ますが、接続確立の文言は主にデータベースへ届かないときに出ます。
wp-config.php
接続情報は wp-config.php に書きます。見る場所は DB_NAME、DB_USER、DB_PASSWORD、DB_HOST の四つです。テーブル接頭辞の $table_prefix が違うと、接続は成功しても「データベース接続確立エラー」ではなく、再インストールを促す画面や、ログイン不能になります。今見ているエラーが接続確立の英文なら、まずは四つの定数です。
ファイルはサイトのルートにあります。公開ディレクトリの直下で、wp-admin や wp-content と同じ階層です。FTP、SFTP、サーバーのファイルマネージャのどれかで開きます。編集前に必ず控えをダウンロードします。一行でも壊すと、接続エラーが設定ファイルの構文エラーに変わり、原因が二重になります。
DB_HOST は localhost が多いですが、サーバーによっては 127.0.0.1 や、mysql番号.ホスト名、特定のポート付きです。引っ越しのあとに移行元の値を残していると、このエラーになります。パネルに書いてあるホスト名と、ファイルの値が一致しているかを一字ずつ見ます。前後の空白、全角、引用符の欠けも同じ症状です。
パスワード変更
サーバーパネルでデータベースユーザーのパスワードを変えたあと、wp-config.php を直していないと、翌日ではなくその瞬間から落ちます。自動更新でパネル側だけ定期変更している契約もあります。自分で変えていなくても、事業者の案内メールにパスワード再設定とあれば、ファイル側が古いままです。
直す順番は、パネルで正しいパスワードを確認し、ファイルの DB_PASSWORD をそれに合わせることです。逆にファイルだけ先に変えても、データベースは古いパスワードのままなので繋がりません。パスワードに引用符やドル記号が含まれると、ファイル上の書き方で値が切れます。その場合は、パネル側で記号の少ないパスワードへ変え、ファイルも同じ値にします。
ユーザー名とデータベース名の取り違えも多いです。パネルでは、データベース名とユーザー名が似た文字列で並びます。片方が数字違い、というミスは見た目では気づきにくいです。接続確認の機能がパネルにあるなら、同じ四つの値でそこから接続できるかを先に試します。パネルでは繋がるのにWordPressだけ落ちるなら、ファイルの引用符か、途中の余分な空白です。
サーバー負荷
接続情報は正しいのに、同じエラーが出ることがあります。データベースのプロセスが止まっている、同時接続数の上限、ディスク満杯、メモリ不足です。共用サーバーでは、同じ筐体の他サイトが重い時間帯に一時的に出ることもあります。数分で戻るなら、設定を書き換えず、パネルの稼働状況と、事業者の障害情報を見てください。
戻らない場合は、データベースの再起動ができる契約かを見ます。VPSなら自分で再起動できます。共用レンタルでは再起動は事業者側です。ディスクが100パーセントだと、再起動してもすぐ止まります。ログと一時ファイル、古いバックアップの置き場を先に空ける必要があります。バックアップを消すときは、新しい世代を残し、古い圧縮ファイルから削ります。
負荷で落ちている最中に、プラグインの大量更新や、検索の置換を走らせないでください。接続が細っているところへ書き込みを増やすと、テーブル破損の側へ倒れます。閲覧だけなら待ってよいです。投稿や在庫更新が必要な店は、メンテナンス表示をサーバー側で出し、復旧まで受け付けを止めます。
WordPress側の原因
接続情報とサーバーが無事でも、WordPress側の壊れ方で同じ英文になることがあります。頻度は低めです。wp-config.php の構文が壊れて定数が読めない、define の行が重複している、別の設定ファイルを読み込んでいる、という形です。控えと今のファイルを比べ、自分で触った行だけ戻します。
WP_HOME と WP_SITEURL を間違ったホストへ向けると、接続エラーではなくリダイレクトのループや、別サイトの表示になります。今の画面が接続確立の英文なら、この二つの定数は後回しでよいです。ただし、引っ越し直後で両方同時に変えているときは、接続情報の行とURLの行を混ぜて直さないでください。一度に直す行が多いと、どれで直ったか分かりません。
テーブル接頭辞が、実テーブルと違う場合は、接続は成功します。そのあとで「データベースを再インストールしますか」や、真っ白な管理画面になります。英文の接続エラーだけ出ているなら、接頭辞より先に四つの定数を疑う、という順番を崩さないでください。接頭辞を先にいじると、別のテーブルを見に行き、復旧が長くなります。
オブジェクトキャッシュのプラグインや、外部のRedis、Memcachedが落ちていると、別のエラーになることが多いです。接続確立の英文に見える独自のメンテナンス画面を出しているテーマもあるので、ソースのタイトルと本文を確認します。WordPress標準の英文と一字でも違うなら、テーマかWAFの応答です。その場合は、サーバーのアクセスログで、データベースへ届く前に遮断されていないかを見ます。
自動更新が本体だけ成功し、データベースの照合順序や、必要なテーブルが古いまま、というずれは、接続エラーより更新後の白い画面で出ます。切り分けのため、直前に自動更新の通知が来ていないかは見ておきます。来ていれば、復旧後にテーマとプラグインの整合を確認する材料になります。
データベース接続確立エラーの対処
対処の順番は、パネルでデータベースが生きているかを見る、wp-config.php の四つをパネルの値と照合する、phpMyAdminで同じ値で入れる、入ったらテーブルの破損を見る、です。ファイルを先に大きく書き換えると、原因が消えても新しい壊れが残ります。
phpMyAdmin
サーバーパネルから phpMyAdmin を開き、wp-config.php と同じユーザーとパスワード、同じデータベース名で入れるかを試します。入れないなら、WordPressの問題ではありません。パネルでユーザー権限と、ホストの許可、パスワードを直します。入れるなら、接続情報は正しく、WordPress側の読み方か、テーブルの状態です。
入れたあと、左側のデータベース名を開き、wp_posts や接頭辞付きの posts テーブルがあるかを見ます。テーブルが一つもない空のデータベースを見ているなら、名前の取り違えです。同じパネルにデータベースが複数ある契約では、よく似た名前を開き違えます。行数が極端に少ない posts は、復元の途中か、別環境の残骸です。
phpMyAdmin のインポートは、今のエラーを直す手段ではありません。誤って空のSQLを流すと、復旧できる材料まで消えます。今は閲覧と、次の修復の実行、バックアップのエクスポートまでに止めてください。エクスポートは、修復の前に一度取ると、修復で悪化したときに戻れます。
データベース修復
テーブルが破損していると、接続はできても同じ英文や、別のデータベースエラーになります。WordPressには修復用の定数があります。wp-config.php の「編集が必要なのはここまでです」より上に、WP_ALLOW_REPAIR を true にする行を追加します。保存したあと、サイトの wp-admin/maint/repair.php をブラウザで開きます。
修復と最適化のボタンが出ます。先に修復だけ実行します。最適化はディスクと時間を使うので、復旧してからでよいです。完了したら、追加した定数の行は必ず消します。残すと、ログインしていない人でも修復画面を開けます。修復で直ったあとは、管理画面の投稿一覧と、トップの表示を見ます。
repair.php が404になる、または定数を足しても画面が出ない場合は、ファイルの置き場所が違うか、管理画面のディレクトリ名を変えています。そのときは phpMyAdmin のテーブル画面から、破損と出ているテーブルを修復します。自分でSQLを書いて大量に直す作業は、控えがないと戻できません。世代のあるバックアップがあるなら、修復より復元の方が短いことがあります。
復元するなら、エラーが出る直前の世代を選びます。一番新しいバックアップが、すでに壊れたあとの取得だと、同じエラーが戻ります。ファイルとデータベースは同じ時刻の組で戻します。片方だけ戻すと、メディアのパスや、ユーザーIDがずれます。
データベース接続確立エラー|テーマとプラグイン
接続情報が正しく、phpMyAdminにも入れ、修復も通ったあとでまだ落ちる場合は、起動時にデータベースへ異常な問い合わせを投げているテーマやプラグインを疑います。ただし、管理画面に入れない段階では、画面から無効化できません。ファイルマネージャでフォルダ名を変えて止めます。
先にプラグインです。wp-content/plugins の中で、直前に更新したフォルダ、キャッシュ、セキュリティ、バックアップ系を一時的にリネームします。サイト全体が戻ったら、一つずつ名前を戻して原因を特定します。全部まとめて止めて戻った場合も、一気に戻さず、更新日時の新しいものから戻します。
テーマは wp-content/themes です。有効テーマのフォルダをリネームすると、WordPressは別のテーマへ倒れます。標準テーマが残っていないと、公開面は崩れますが、接続エラーがテーマ起因なら管理画面には入れることがあります。子テーマを使っているサイトは、親と子の両方の更新日時を見ます。子だけ壊れていても、親の関数を呼ぶ過程で接続が落ちることがあります。
オブジェクトキャッシュのファイル、advanced-cache.php、db.php が wp-content 直下にあると、通常の接続の前に差し込まれます。引っ越しやプラグイン削除のあとで残りやすいです。該当ファイルをリネームしてから再読み込みします。消すのは、控えを取ったあとです。WAFやCDNのキャッシュは、直したあとも古いエラー画面を返すことがあります。サーバー側が直ったのに画面が変わらないときは、手前のキャッシュを消します。
止めたプラグインを戻すときは、同じ日にまとめて更新しません。原因だった拡張を最新に上げる前に、互換と、その拡張の更新履歴を見ます。データベースのテーブルを自前で持つ予約や会員の拡張は、止めたままだとデータは残っても、公開面の機能が消えます。接続が戻ったことと、機能が揃ったことは別の確認です。
データベース接続確立エラー|インストール直後
入れた直後からこのエラーになるときは、急に壊れた公開サイトとは原因の分布が違います。多いのは、インストーラに入れたデータベース名やパスワードの取り違え、先に作っていないデータベースを指定した、DB_HOST の初期値がそのサーバーと違う、の三つです。
レンタルサーバーの簡単インストールは、パネルがデータベースを作って wp-config.php まで書くことが多いです。自分でファイルを上げてインストール画面を開く場合は、先にデータベースとユーザーを作り、権限を付けてからインストーラへ進みます。権限が付いていないユーザーだと、インストールの途中で失敗し、あとから同じ接続エラーになります。
インストール画面の前に、すでに wp-config.php を置いていると、置いたファイルの値が使われます。サンプルの wp-config-sample.php をコピーしただけだと、database_name_here のままです。その状態で公開ディレクトリに置いてしまうと、インストール完了後も繋がりません。ファイルがあるのにインストール画面が出る、という食い違いを見たら、今の wp-config.php を開いてプレースホルダが残っていないかを確認します。
一つのデータベースを複数のWordPressで分ける契約では、接頭辞を変えます。接頭辞が同じだと、インストールが既存テーブルを見て止まり、接続エラーとは別の警告になります。今の画面が接続確立の英文なら、接頭辞より先に四つの定数と、データベースの実在を見てください。
インストール直後にSSLの強制や、管理画面のURL変更まで一気に入れると、原因が重なります。先にプレーンな状態でトップと管理画面が見えることを確認し、そのあとで常時SSLと、ログインURLの変更へ進みます。ログインURLの変更はプラグインなしの手順に分けてあります。
データベース接続確立エラーが直らないとき
四つを合わせ、phpMyAdminに入れ、修復し、プラグインとテーマを止めても英文が残るときは、見ているファイルが実行されているファイルと違うことがあります。公開ディレクトリが複数あり、古いドキュメントルートを見ている、CDNの先が別サーバーを向いている、hosts の切り替えが残っている、というずれです。
今ブラウザが見ているIPと、ファイルマネージャで開いているサーバーが同じかを確認します。DNSの切り替え途中だと、場所によって直ったサイトと、古いエラーが見えます。一時的にhostsで先方IPを向けるか、サーバーの一時URLで確認します。一時URLで直っているなら、設定ではなくDNSかキャッシュです。
データベースのホストが外部のマネージドに分かれている構成では、ファイアウォールでWordPress側のIPが拒否されていることがあります。パネルの接続確認は内部から成功し、公開サイトのPHPだけ届かない、という形です。許可IPの一覧に、ウェブサーバーの出口が含まれるかを見ます。IPが変わる共用環境では、許可の仕方自体を事業者へ確認します。
直らないまま wp-config.php を何度も上書きすると、控えがどれか分からなくなります。日付入りのファイル名で残し、最後に成功したパネルの値だけを正本にします。SQLのインポートを試すのは、今あるテーブルの控えを取ったあとです。空の上書きは、このあとの復旧手段を消します。
管理画面に入れるようになったら、サイトヘルス、投稿の編集、フォームのテスト送信まで見ます。接続エラーの復旧は、英文が消えた瞬間ではなく、更新とバックアップが回るところまでです。日次のバックアップが止まっていたなら、復旧同日に手動で一世代取ります。
データベース接続確立エラーを自分で難しいとき
wp-config.php の日時が自分の作業と一致しない、見知らぬ管理者ユーザーが増えている、公開面のソースに見知らぬドメインがある、修復画面以外の見知らぬPHPがルートにある、このどれかがあるときは、接続の直しより先に改ざんの切り分けです。サイト改ざん・マルウェア駆除へ進みます。感染後の緊急対応は税別29,800円からです。人が問題かを見てから隔離と除去に入ります。
改ざんではなく、更新と監視の窓口が欲しい場合はWordPress保守です。死活は全プランで24時間365日1秒単位です。落ちた、遅い、届かない兆候は、検知したあとで人が問題かを見てから直します。マルウェアの常時監視はスタンダード月額17,800円(税別)以上です。更新の少ないサイトはライト月額8,800円から、止められないサイトはプレミアム月額34,800円です。
自分で直す途中でも、公開URLと、パネルでデータベースに入れたか、wp-config.php をいつ触ったか、の三つが分かれば次の一手を分けられます。パスワードをチャットに貼る必要はありません。入れたかどうかと、画面の文言だけで十分です。
あわせて見る
相談
接続エラーの出方から分けます
公開URLと、データベースへ入れたかが分かれば、設定の直しと、改ざんの点検のどちらから着手するかを返します。