ブログ
WordPressでの独自ドメイン移行時に、phpMyAdminで書くべきSQL文
こんにちは。株式会社コミュニティコムの星野邦敏です。
昨日のKDDIウェブコミュニケーションズさんで行われました
Web制作を効率化して、クリエイティブに専念しよう~WordPress編~(Facebookイベント)
において、
CPIサーバーでのSmartRelease(スマートリリース)のサービス紹介がありました。
SmartRelease(スマートリリース)というサービスは、共有レンタルサーバーのCPIを使った際に、
・テストサーバーから本番サーバーに移行できる(テストサイトと公開サイトが同じ環境でボタン1つで動作できる)
・過去30日分のバックアップを自動で取ってくれる(30世代前までのバックアップデータを毎日深夜の時間帯で自動で取ってくれる)
この2点が大きなサービス特徴だそうです。
SmartRelease(スマートリリース)は、CPIサーバーの「シェアードプラン ACE01」を使っていれば、無料で利用できるサービスということで、おぉ!素晴らしい!と思いました。
ただ、結局、テストサーバーから本番サーバーに移行する際には、FTPファイルはそのまま移行してくれるので便利ですが、WordPressのように、データベース(MySQL)にURLが相対パスではなく絶対パスで格納されてしまう場合には、SmartRelease(スマートリリース)が用意するテストサーバーの独自ドメインと本番サーバーの独自ドメインは、URLが異なるから、本番に移行するボタンを押した後にSQL文を書いてね、という説明でした。
この1手間は意外に敷居が高いと感じる人もきっといると思いまして、これだったら、本番環境の階層下のディレクトリでテストサーバー作る方が楽だと思う人もいるかもしれないですし、結局、初心者向けにはSQL文をどう書いて良いのか分からないんじゃないかと思いました。
また、独自ドメインに移行する際に、既にカスタムフィールドを作っている場合には、meta_valueもREPLACE(リプレイス)しないといけないと思うので、阿部さんが解説されていたSQL文だけではカスタムフィールドを作っていた場合でそこにURLを入力していた際にはSQL文が足りない気がしました。
そこで、WordPressでの独自ドメイン移行時に、phpMyAdminで書くべきSQL文として、弊社で行なっている方法を、以下に記載します。
この方法は、今回のSmartRelease(スマートリリース)での移行のように、テストサーバーと本番サーバーのURLが異なる場合だけでなく、独自ドメインURLをそもそも変更するような移行の際にも、どのサーバーにおいても実行できる方法だと思います。
要は、WordPressのデータベースにおいて、URLの記述のある場所を、SQL文でREPLACEする(リプレイスする)ということです。
以下、具体的な方法を記載します。
まず、データベース内に入りましょう。今回は共有レンタルサーバーを前提としているので、多くの共有レンタルサーバーには、予めphpMyAdminがあると思いますので、phpMyAdminから操作します。
(1)
上のタブに[SQL]という箇所があるので、クリックします。
(2)
そこに、以下のSQL文を入力します。
UPDATE wp_options SET option_value=REPLACE(option_value,"旧ドメイン","新ドメイン"); UPDATE wp_posts SET post_content=REPLACE(post_content,"旧ドメイン","新ドメイン"); UPDATE wp_posts SET guid=REPLACE(guid,"旧ドメイン","新ドメイン"); UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"旧ドメイン","新ドメイン");
例えば、以下のような形です。
UPDATE wp_options SET option_value=REPLACE(option_value,"http://www.wp-sample.com","http://www.wp-sample.net"); UPDATE wp_posts SET post_content=REPLACE(post_content,"http://www.wp-sample.com","http://www.wp-sample.net"); UPDATE wp_posts SET guid=REPLACE(guid,"http://www.wp-sample.com","http://www.wp-sample.net"); UPDATE wp_postmeta SET meta_value=REPLACE(meta_value,"http://www.wp-sample.com","http://www.wp-sample.net");
(3)
最後に、[実行する]をクリックします。
なお、SQL文を実行してしまいますと、元に戻せませんので、URLが正しいか、しっかりと確認しましょう。実行時間自体は、記事数にもよりますが、基本的には、一瞬で実行されると思います。
以上となります。
KDDIウェブコミュニケーションズの阿部さんの発表の後に、データベースの移行について、やいのやいの議論する人達。
阿部さんは、オープンソースCMS「Drupal」の日本のコミュニティ活動もされているそうです。
その後、懇親会でも、色々とお話をしました。
発表者だった、よつばデザインの後藤さん、阿部さん、ありがとうございました!
後藤さんのスライド
(スライド)WordPressを使ったWeb制作効率化のためのTips&Tools | よつば手帖
この様子は、直子さんやサトタカさんも既にブログ記事にしているようです。そちらもご覧ください。
「Web制作を効率化して、クリエイティブに専念しよう~WordPress編~」イベントレポート – ja.naoko.cc
デザイナーが語る効率的なWordPressサイト制作|ロゴ&ウェブデザイナー!
(2012年9月24日追加)
自分は上記のデータベースの一括置換で今まで問題が無かったのですが、
岡本さんのブログを拝見したら、
「ただ wp_options とか wp_postmeta とかにはシリアライズされたデータが入っているので、これらはそのまま置換するとまずいです。
(シリアライズデータの中には、文字列の長さとかも含まれてるので)
そこで、シリアライズされたデータは一度アンシリアライズしてから置換して、シリアライズした後に DB に書き戻してやる必要があります」
とありました。
以下の記事もご参考ください。
WordPress のDB上のサイトURLを一気に変換 | dogmap.jp
(2012年10月9日追加)
山本さんがスクリプトの紹介をしてくださっていました。
以下の記事もご参考ください。
WordPressでサーバ移行時にデータベース上のドメインを書き換える方法 | Webcre Archive
IT事業と不動産運営事業を行う株式会社コミュニティコムの代表取締役。埼玉県さいたま市の大宮駅東口近くの「コワーキングスペース7F」「シェアオフィス6F」「貸会議室6F」の運営代表者。「大宮経済新聞」の編集長。WordPress日本語公式サイトのイベントカレンダー更新。他、複数の一般社団法人とNPO法人の理事などをしています。趣味は自分の思い付いたWebサービスを自分で自由に開発することです。最近は農業と食と家庭菜園のビジネスなどにも興味があります。