[WordPress]マルチサイトのサーバ移行時にデータベース接続確立エラーになったら
- 公開日:2021/7/6
この記事は最終更新日から3年以上が経過しています。
WordPressのマルチサイトで構築されたサイトをサーバ移管したところ、『データベース接続確立エラー』(Error establishing a database connection)になってしまいました。
サーバー移管で行った手順は次のとおり。
- WordPressのファイル一式を旧サーバからダウンロードし、新サーバへアップロード。
- 新サーバのwp-config.phpを書き換える。
- 旧サーバのデータベースをエクスポートし、新サーバでインポート。
- データベースのデータを新しいサイトURLに書き換える(Search-Replace-DBを使用)
データベース接続確立エラーが出たときに疑う場所は2つ。
- wp-config.php
- データベースの設定
何度も何度もwp-config.phpは確認したので問題ないはずですが、念のために再確認。
wp-config.phpの設定
シングルサイトのサーバ移行でも注意が必要な箇所と同じ。
// ** MySQL 設定 - この情報はホスティング先から入手してください。 ** //
/** WordPress のためのデータベース名 */
define('DB_NAME', 'new_dbname');
/** MySQL データベースのユーザー名 */
define('DB_USER', 'new_dbuser');
/** MySQL データベースのパスワード */
define('DB_PASSWORD', 'new_password');
/** MySQL のホスト名 */
define('DB_HOST', 'new_dbhost');
/** データベースのテーブルを作成する際のデータベースの文字セット */
define( 'DB_CHARSET', 'utf8mb4' );
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define( 'DB_COLLATE', '' );
マルチサイトだけの記述。
特に注意が必要なのは4行目のドメイン。あと、環境によって5行目のパスも要チェック。
define('WP_ALLOW_MULTISITE', true);
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'new-domain.jp'); // ここのドメインは正しいか?
define('PATH_CURRENT_SITE', '/'); // ここのパスは正しいか?
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
何度も確認しただけのことはあって、私の場合はwp-config.phpは問題ありませんでした。
では、疑わしきはデータベース。
データベースの設定
接頭辞はデフォルト「wp_」を想定しています。確認したいテーブルは以下のとおり
- wp_blogs
- wp_options
- wp_site
- wp_sitemeta
- wp_n_options(サイトネットワークの数だけ)
それぞれのテーブルで確認したいレコードは以下のとおり。「カラム名:値」で記載しています。
wp_blogs
domain:新ドメイン
path:各サイトのパス
wp-options
option_name:siteurl
option_value:WordPressインストールURL
option_name:home
option_value:ホームURL
wp-site
domain:新ドメイン
path:サイトのパス
wp-sitemeta
meta_key:siteurl
meta_value:WordPressインストールURL
wp-n-options
サイトネットワークの数だけテーブルがあります。
option_name:siteurl
option_value:サイトネットワークURL
option_name:home
option_value:サイトネットワークURL
「wp_blogs」「wp_site」でドメインとパスが正しく置換できていませんでした。
サイトURL書き換えに利用した「Search-Replace-DB」の置換パターンにハマらなかったからだと思われます。
マルチサイトでは注意が必要ですね。勉強になりました。