こんにちは、金田です。
WordPressをインストールするとき、理想は1つのデータベースに1つのWordPressですが、レンタルサーバーによっては1つのデータベースで複数のサイトを運営する必要性に迫られることもあると思います。
レアケースかもしれませんが、WordPressサイトの引越先が1つのデータベースしか使えない引っ越しをしたケースがあるのでその方法をご紹介いたします。
作業のイメージ
■引っ越し元(1データベースに単一サイト)
データベース1(接頭辞「wp_」):WordPressサイトA
データベース2(接頭辞「wp_」):WordPressサイトB
データベース3(接頭辞「wp_」):WordPressサイトC
■引っ越し先(1データベースに複数サイト)
データベース4(接頭辞「wp1_」):WordPressサイトA
データベース4(接頭辞「wp2_」):WordPressサイトB
データベース4(接頭辞「wp3_」):WordPressサイトC
お約束ですが、作業前には必ずバックアップを取ってから作業してください。
データベースの書き換え
まずはデータベースの書き換えを行います。
- phpMyAdminにアクセスし、WordPressで利用しているデータベースを選択します。
- グローバルメニューよりSQLを選択します。
- 接頭辞を書き換えるクエリ(後述)を入力し、「実行する」を選択します。
(例)「wp_」を「wp3_」に置換するクエリ
ALTER TABLE wp_commentmeta RENAME TO wp3_commentmeta; ALTER TABLE wp_comments RENAME TO wp3_comments; ALTER TABLE wp_links RENAME TO wp3_links; ALTER TABLE wp_options RENAME TO wp3_options; ALTER TABLE wp_postmeta RENAME TO wp3_postmeta; ALTER TABLE wp_posts RENAME TO wp3_posts; ALTER TABLE wp_terms RENAME TO wp3_terms; ALTER TABLE wp_term_relationships RENAME TO wp3_term_relationships; ALTER TABLE wp_term_taxonomy RENAME TO wp3_term_taxonomy; ALTER TABLE wp_usermeta RENAME TO wp3_usermeta; ALTER TABLE wp_users RENAME TO wp3_users;
- 続いて、下記のクエリも実行します。
※手順3まででデータベースの接頭辞が書き換わったようですが、このままではエラーが発生します。
(例)「wp_」を「wp3_」に置換するクエリUPDATE wp3_options SET option_name = ‘wp3_user_roles’ WHERE option_name = ‘wp_user_roles’; UPDATE wp3_usermeta SET meta_key = ‘wp3_capabilities’ WHERE meta_key = ‘wp_capabilities’; UPDATE wp3_usermeta SET meta_key = ‘wp3_user_level’ WHERE meta_key = ‘wp_user_level’; UPDATE wp3_usermeta SET meta_key = ‘wp3_dashboard_quick_press_last_post_id’ WHERE meta_key = ‘wp_dashboard_quick_press_last_post_id’; UPDATE wp3_usermeta SET meta_key = ‘wp3_user-settings’ WHERE meta_key = ‘wp_user-settings’; UPDATE wp3_usermeta SET meta_key = ‘wp3_user-settings-time’ WHERE meta_key = ‘wp_user-settings-time’;
以上で、データベースの書き換えは完了です。
wp-config.phpの書き換え
続いてWordPressをインストールしたフォルダに「wp-config.php」というファイルがあると思いますが、こちらを修正します。
(例)「wp_」を「wp3_」に変更する場合
/**
* WordPress データベーステーブルの接頭辞
*
* それぞれにユニーク (一意) な接頭辞を与えることで一つのデータベースに複数の WordPress を
* インストールすることができます。半角英数字と下線のみを使用してください。
*/
$table_prefix = 'wp3_';
トラブルシューティング
すべての作業が完了してWordPressのダッシュボードにアクセスしようとしたところ下記のような画面が出ました。
これはデータベースの書き換え作業に漏れがあった可能性があります。もとの接頭辞「wp_」などで検索して置換の漏れがないか確認してみてください。特定のプラグインやテーマが独自のテーブルを生成している可能性があります。
参考にさせていただいたサイト
この2つのサイトのおかげで無事対処することができました。感謝。