WordPressからWordPressへのデータ移行

この記事は単に自分のための覚え書きおよびWP初心者には少しは役に立つかも、という程度のものですが、自分が結構ハマったので記載しとく。
ペンギンのずっこけ日記を期待している常連さんは流してください。

※注意
以下の記載は移転元と移転先のURLが変わってしまう方には特に参考になると思います。
ドメインごと他サーバーへ移転する際には必要のないことが多々書かれているので、必要な情報だけ読み取ってください。

今回、サーバー移転するにあたり、blogツールをWordPressに変更した
今まで使っていたSerenBach (SB)が記事数が増えるにつれてあまりにも動作が重くなってきたのがその理由
ちょこっとググってみたところ、CGIよりもphpの方が軽い、ということである
phpで動作するものとしてはMovableType (MT)が日本では主流
が、最初にブログを設置する時にMTの管理画面が直感的にわかりにくくてなんとなくなじめなかったので、どうしたもんかと悩んでいた

そんなときにみつけたのがWordPress (WP)
確かボストンのダイゴさんのところへ久しぶりに行ってみたら、ツールがWPだったのである
ほ~ こんなツールもあったのね、ということで、やってみた

そしたら、えらいことインストールもカスタマイズも簡単で扱いやすかったのである
こりゃええわい♪

しかも、SBからWPへのデータ移行もむちゃくちゃ楽だった
SBにはデータのエクスポート機能がデフォルトでついていて、MT方式でエクスポートしたのをWPのインポート機能を使って読み込んだだけで記事ばかりでなくコメントや画像までちゃんとくっついてきてくれたのである

すばらしい!

ところが、である
移転先にしようとしていたSAKURAサーバーへのアクセスが自分の環境からだと致命的に重いという問題があってやむなく断念
結局、今まで使っていたサーバー (Xserver) に出戻ってきた
そちらに新たに設置したWPへ、さて、データをインポートしようとしてふと
「ん? SAKURAへ仮設置してから書いた記事はまぁほんの数日分しか足されてないから手作業でもいいとして、そこについたコメントやらせっかく設置したpagesも手作業でやるのは面倒だな」

しかしながら、驚いたことに、なんと、WPにはエクスポート機能がないのである
それらしいプラグインは2つほど見つけたのだが、バージョンと相性が悪いらしくて動かない

とにかくググりまくって見たところ、どうやらWPではデータベースのデータをそのまま新しいサーバーのデータベースに移すのが一般的らしい

で、やって見ました
サーバーのコントロールパネルからphpMyAdminというのにアクセスし・・・ようかと思ったら、なんとSAKURAはユーザにその権限を設定していないらしくアクセスできない

エクスポートできないじゃん!
と、思ったら、幸いにもWPにデフォルトでついてた『データベースバックアップ機能』を使って、なんとかデータベースのデータは吸い出すことができたのでほっとする

プラグイン画面でWordPress Database BackUPを有効化すると、『管理』タブに『backup』というタブが表示されるので、あとはBackUP!ボタンを押せば、自分のパソコンハードディスク上にローカルバックアップが作成される

追記:SAKURAでphpMyAdminが使えない、というのは誤りで、ちゃんとコントロールパネル内にリンクボタンがありました
ちょっと気づきにくかったのが敗因
オラ単なるバナーかと思っちまっただよ

さて、これを新サーバーのデータベースに書き込んでみよう
と、最初はいきなりバックアップファイルを一括アップロードし、もとのデータを上書きしようとしてみた結果、データベースってのは上書きはできないことになってるらしく、一度データベースに作成されていたテーブルを全部削除しなければならんかった

削除のやり方
MySQLからデータベースを選ぶと内容が一覧表示される
各テーブルのチェックボックスをチェック(または『全てをマーク』をクリックすれば全部にチェックが入る)
プルダウンメニューの『チェックしたものを』→『削除』
本当に実行しても良いですか? → はい
完了した旨のメッセージが出ればおっけ

テーブル削除後、『SQLタブ』から先ほど作成したローカルバックアップデータを『参照』し、アップロード
したら、いきなり必要なテーブルが全部ちゃんとインポートされてきた

おおっ こんな簡単なことだったのか!

ところが、である
記事もコメントもpages部分も全部ちゃんと取り込めたのはいいのだが、管理画面に入ろうとしたらなぜかSakuraサーバーに設置してあるブログの方の管理画面に行っちゃうのである
新たに設置したブログに書き込むことも設定を変更することもできん

ありゃ・・・どうやらインポートしたデータの中に、リファラ(サイトのアドレス情報)が書き込まれているやつがあったらしい
しゃーないので、もういっぺんデータベース中のテーブルの中身を全部空っぽにし、WPを再インストール

ここからがキモ

新たに作成されたデータベーステーブルは

    wp_categories
    wp_comments
    wp_linkcategories
    wp_links
    wp_options
    wp_post2cat
    wp_postmeta
    wp_posts
    wp_usermeta
    wp_users

という名前で計10個ある

  1. エクスポートタブをクリックし、wp_optionsだけを選択してエクスポート
  2. (自分のデータベース名).sqlというファイル名のローカルバックアップを保存しとく
  3. 移転先データベースのphpMyAdminメインページに戻って、またも作成されたテーブルを全部 『削除』(空にするのではなく、削除する)
  4. SQLタブをクリックし、先ほどと同じ手順でログが保存されているデータベースバックアップファイルをインポート
  5. メインページに再び戻り、wp_optionsだけを削除
  6. ローカル保存しておいたwp_optionsのsqlファイル(1で作ったやつ)をインポート

(゚Д゚)ウマー

それにしても、何でこういうことを解説したマニュアルが(日本語で)完備されていないのだろう?
日本のフォーラムを検索しても見つからなかったし
本家のフォーラム(英語)を検索するのはちと面倒だし
ググってもちゃんと解説してある記事は見つからなかったし

結局自己解決するしかなかったので、一応、ここへ書き記しとく、ということで おけ?
 
 
 
phpMyAdminが使える場合

この場合はもちろんもっと簡単にデータ移行できるんで、以下を参考にどぞ

  1. 移転先にあらかじめwordpressを新規にインストールしておく
  2. 移転元からwp-optionsだけを除外したsqlファイルをエクスポート
  3. 移転先のデータベーステーブルからwp-optionsだけを残してあとは削除
  4. 先ほど作成したsqlファイルをインポート

もっと(゚Д゚)ウマー

※注意
ただしこの方法を使うと、プラグインの設定やアップロードした画像情報とかはぜーんぶ消えます。
それを避けたい方は移転元のwordpress管理画面から現在のwordpressアドレスを移転先のwordpressのアドレスにあらかじめ変更してからデータベースのバックアップをすれば、wp-optionsを除外する必要がなくなります。
要するに、移転先の情報にあわせたデータベースを先に作っておけばいいわけです。
んが、それをやった直後から旧wordpressは一切使用できなくなりますんで、あとは自己責任でやってくだされ。

phpMyAdminの使い方は ここらへん を参考にしてくだされ