- 実践 WordPress ホーム
- エラーの対処法
WordPress のエラーの対処法「データベース接続確立エラー」
WordPress エラー解決基本編ということで、 WordPress サイトの定番エラーのひとつ「データベース接続確立エラー」について説明します。
ちなみに、英語のエラーメッセージは「 Error establishing a database connection 」です。
問題
「データベース接続確立エラー」は WordPress サイトがデータベースに接続できないときに発生するエラーです。
WordPress サイトは一般に大きく次の 3 つの要素で構成されます。
- ウェブサーバー
- PHP ランタイム
- MySQL データベース
WordPress サイトにおいてはサイト名から投稿コンテンツまで、サイト固有のありとあらゆる情報がデータベースに格納されているため、 WordPress サイトが正しく動くためには PHP が MySQL データベースに接続できることが不可欠です。 その接続ができないことを意味するのが「データベース接続確立エラー」です。
原因と解決方法
原因別に解決方法を見ていきましょう。
原因 A. データベース接続情報が間違っている
最も多い原因はデータベース接続情報の間違いです。
データベース接続情報は WordPress の設定ファイル wp-config.php
の中で名前が DB_
から始まる定数で設定されています。
サンプル:
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', '...' );
/** Database username */
define( 'DB_USER', '...' );
/** Database password */
define( 'DB_PASSWORD', '...' );
/** Database hostname */
define( 'DB_HOST', '...' );
/** Database charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8mb4' );
/** The database collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
サーバーの引っ越しをしたりデータベースを作り直したりしたときなど、接続先のデータベースが変わったのに設定が正しく変更されなかったときにこのパターンになりがちです。
原因 B. データベースが存在しないか壊れている
データベース自体が存在しない、もしくは壊れている場合にもこの「データベース接続確立エラー」は発生します。
wp-config.php
に記述された接続情報が正しいのに一貫してデータベースに接続できない場合はこのパターンを疑うとよいと思います。
phpMyAdmin などのデータベース管理ツールで該当のデータベースへのアクセスを試みて、一貫してアクセスできなければこの原因の可能性が高いです。
原因 C. サイトの負荷が高い
サイトへのトラフィック(≒アクセス数)が多くサイトの負荷が高い場合は、接続情報が正しくてデータベースが壊れていなくても「データベース接続確立エラー」が発生することがあります。
一般に MySQL データベースには同時接続可能な数に上限が設定されていますが、その上限値を超えて接続が試みられたときなどはこの接続確立エラーが発生します。 これは家庭の電気のブレーカーが落ちる状況をイメージしていただくとわかりやすいかと思います。
WordPress サイトはコーポレートサイトでよく使われているので、 SNS などでバズったり炎上したりした会社のサイトを開いたときにこのエラーが表示されるのを見かけたことがある方も多いのではないでしょうか。
原因 D. データベースのマシンが停止している
メンテナンスなどでデータベースのマシンの稼働が停止している場合にも接続確立エラーは発生します。 このパターンの場合は、データベースのマシンを自社で管理している場合はマシンを起動する、ホスティング会社が管理している場合はメンテナンスの終了を待つ、といったアクションを取ることになります。
以上です。 細かくあげると他にも原因のパターンはいろいろありますが、一般的に多いのはこれらの 4 つのパターンだと思います。
ですので、「データベース接続確立エラー」がページに表示されたときには
- 接続情報は間違っていないか
- データベースは存在していて、なおかつ壊れていないか
- サイトの負荷に対してサーバーのスペックは十分か
といったポイントをチェックすると原因の特定に繋がります。
なお、次のページでも説明している WP_DEBUG
を使ったデバッグ設定を有効にするともう少し詳細なエラー内容を確認できます。
以下そのデバッグ設定を有効にした画面のサンプルです。
日本語:
英語: