メニュー 閉じる

WordPress のDB を変更する方法。

概要

WordPress(以下、WP)のサイトを複製する為、データベース(以下、DB)の差し替えと、テーブル接頭辞の変更方法を検証した時のメモです。

目的は、WP サイトの複製です。

DB を差し替えと、同一DB 内にサイトのデータを複製するケースも考えて、テーブルの接頭辞も変更してみました。
また、ドメインも変更してます。

前提

  • WordPress を使うための環境がローカルのサーバーにインストールされています。
  • DNS で、ローカルサーバーのホスト名(FDQN)をWEBサイトのURL と同様にしています。
    • WEBサイト:zapping.beccou.com
    • ローカルサーバー:zapping.beccou.com(=localhost)

環境の詳細については、下記の記事をよければ参照ください。

Apache はSSL にしました。

ソースの準備。

レンタルサーバー等から複製したいWordPress(以下、WP) のデータをバックアップします。

  • WP のインストールフォルダの中身を丸ごとFTP でダウンロード。
    ・・・(A)
  • データベースから、WP が使っているテーブルをダウンロード。
    ・・・(B)

ちなみにサーバーはロリポップです。DB は「MySQL」で管理ソフトには、「phpMyAdmin」が標準で装備されています。

WP の再構築

ここから、別のサイトとしてバックアップしたWP を再構築します。

サイトのフォルダ

(A)のフォルダは、ローカルサーバーの適当な場所にコピーします。
このフォルダを後からApache のドキュメントルートに設定します。

また、ドキュメントルートを変更すると、phpMyAdmin を使用するときにいちいち元に戻すのが面倒だったので(localhost/phpmyadmin に構築していた為)、phpMyAdmin のインストールフォルダを(A)のフォルダ内に移動しています。

データベース

適当な名前で新規データベース(以下DB)作成し、(B)をインポートします。phpMyAdmin で編集していきます。

接頭辞の変更

テーブルの接頭辞をリネームします。
(DB が一つしか使えない場合にテーブルの接頭辞を変更して共存させるための検証です。)

接頭辞を変更するテーブルをすべてにチェックを入れます。

画面下の「チェックしたものを・・・▼」のメニューから、
「テーブル名の接頭辞を付け替える」を選択します。

付け替え元と、付け替え先を設定します。

付け替え元・・・wp1
付け替え先・・・wp4
→「wp1_test_table」が「wp4_test_table」 になります。

リネームされたことを確認します。

さて、テーブル名をリネームしただけだと、サイトがDB を参照することはできるようになりますが、ダッシュボードにアクセスできなかったり、問題が発生します。

検索タブに移動して、リネームしたテーブル内で変更前の「wp1_~」の値を保持している個所を検索します。

各テーブル内で、いくつヒットがあったか、一覧で表示されました。
横の「表示 / 削除」の表示をクリックして、値を確認します。

こんな感じで、まだ接頭辞の変更しないといけなさそうなものが見つかりました。

ダブルクリックすると、値が編集できるので、「wp4_~」になるように編集します。

エンターキー押す、編集フィールド内をクリックする等すると、変更が反映されます。

他にもヒットした値について同様に確認し、必要がありそうなところは編集します。
プラグインで使っている値などもあるようなので判断して編集しましょう。
デフォルトでインストールした状態のWP のDB なんかを参考にすると良いかもしれません。
ちなみに私は全部書き換えました。

以上でDB の準備は終わりです。

wp-config.php の編集

次にwp-config.php の内容を編集します。(A)のフォルダ内にある、WP の設定ファイルです。

インストールした時の情報が保存されているので、(B)の情報に書き換えます。
この作業で、DB の参照先を変更できます。

※DB 名、ユーザー名は(パスワードも)以前のWP サイトのものとは別の値を入れています。
要は、リネームしても大丈夫、ユーザーも権限があればOKと思われます。
MySQL のホスト名も違う値が入っていましたが、localhost で認識してくれてます。

それからもう少し下に下がっていくと、接頭辞を定義する箇所があります。
ここで、変更した接頭辞を指定します。

設定ファイルを保存したら、DB の差し替え作業は終了です。

動作確認。

WEB ブラウザにて、zapping.beccou.com にアクセスします。

ms系関数が使えない問題。

いきなりのエラー。
先ほどのwp-config.php でデバックをオン(※1)に設定しておくと、上記の様に詳細なエラーが表示されます。

※1 デバックモード:オン

/**
 * 開発者へ: WordPress デバッグモード
 *
 * この値を true にすると、開発中に注意 (notice) を表示します。
 * テーマおよびプラグインの開発者には、その開発環境においてこの WP_DEBUG を使用することを強く推奨します。
 *
 * その他のデバッグに利用できる定数については Codex をご覧ください。
 *
 * @link http://wpdocs.osdn.jp/WordPress%E3%81%A7%E3%81%AE%E3%83%87%E3%83%90%E3%83%83%E3%82%B0
 */
define('WP_DEBUG', true);
 ← false を true に変更する。

エラーメッセージを調べていくと、mb 系関数がデフォルトでは使えない。というのが問題のようです。これは使っているプラグインによって書かれた記事の影響が出ていると推察しています。
※古いDB バックアップをインポートした時は、このエラーは出ませんでした。

モジュールといえば、php.ini なので、調べてみると、「mbstring」という拡張機能があったので、有効化。

再び、サイトへアクセスすると、無事にサイトを見ることができました。

記事が閲覧できない問題。

しかし、記事が見られない。。。

ダッシュボードにはアクセスできるので、プラグインを無効化したり、いろいろとした結果、パーマリンクを「基本」にすることで解消しました。

割と、大きな問題だと思うので、修正方法をまた調べたいと思います。
WEBサイトに展開した場合は、いいのかもしれないし。

後日記入: WEB サイト上での変更では、この現象は起きませんでした。拡張機能などの環境の問題だと思います。

とりあえず、記事は見られるからOK。
投稿も出来たし。

WP サイトのURL を変更する。

最後に、WEB サイト上で同じURL は使えない、というか分けたい訳なのでURL を変更する方法を検証。

普段ならダッシュボードにアクセスして「一般」の設定から変更できますが、
それが今回はできない(元のサイトのダッシュボードにアクセスしてしまう、というか区別つかないはず。)ので、DB を直接編集して書き換えます。

参照しているテーブル上で、URL を「完全一致」で検索すると、下記の値がヒットしました。

ネットで調べると、この値の変更は、「一般」の設定画面でURL を変更しているのと、同じだそうです。

値を新しいURL へ変更します。

同時にDNS サーバーのゾーンファイルを編集して、zapping.beccou.com の参照先だったIP アドレスを新ホスト名 test.beccou.com の参照先になるように変更しておきます。

新URL へアクセス。
ちゃんと変更後のURL で接続できました。
サイトのURL が変更されているのが確認できました。

まとめ

という事で、一部パーマリンクの設定に問題はありますが、DB を差し替える手順の検証してはOK にしようと思います。

また、WEB 上で差し替えを行ってみて結果を比べたいと思います。
(環境の問題であれば解消されるはず。)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です