ishii-akihiro’s blog

いろいろ試したことやバグ対応の作業履歴を残していきます。

WordPressでローカル環境からリモート環境にデータベースだけ移行する際に苦慮したこと

概要

はてなブログからWordPressへの移行を試みました。
が、紆余曲折あって3日くらいかかりました。。
ざっくり言うと次のような経緯がありました。

  1. レンタルサーバー(wpX)にWordPressをインストール → OK
  2. はてなブログからWordPressに移行 → OK
  3. WordPressに移行した記事を、ローカル環境にコピー → OK
  4. ローカル環境で記事を修正 → OK
  5. ローカル環境からリモート環境に移行 → 3日苦戦

ということで、上記 5 で苦戦したとこだけ書くことにします。
1〜4はそもそも 5 の作業に影響あるのかわかりませんし、
ググったら色々出てくるので大丈夫だと思います。

方針

記事の執筆・管理が目的なので、
原因が特定できなくてもリモート環境に反映できればOK!
、、ということで許してください。

前提

リモート環境

ローカル環境

ローカル環境からリモート環境への移行手順

1. ローカル環境のデータベース名を、リモート環境に合わせる

早速よく原因がわからなかったとこですが、
リモート環境とローカル環境でデータベース名が違うとうまくいきませんでした。
データベースの中身を総入れ替えするだけだから影響なさそうだけど。。
ともかく、最終的には同名に合わせてうまくいきました!

リモート環境のデータベースは権限の関係で編集するのが面倒だったので、
ローカル環境のデータベース名をリモート環境に合わせます。
もちろん、もともと同名に設定されていれば作業不要です。

  1. MAMPからローカル環境のphpMyAdminを開く
  2. WordPressで使用しているDBを選択する
  3. 「操作」タブの「Rename database to」に、リモート環境のデータベース名を入力する
  4. 「確認」ボタンを押すと確認ダイアログが出るので「OK」を押す

2. ローカル環境のデータベースをエクスポートする

ここはそんなに問題なかったです。
1. ローカル環境のphpMyAdminで、WordPressで使用しているDBを選択する
2. 「エクスポート」タブを開き、以下の設定を変更して最下部「実行」を押す

【エクスポート方法】詳細
【出力】出力をファイルに保存する
【フォーマット特有のオプション】「他のデータベースシステムまたは古い MySQL サーバとの互換性」をMySQL40にする(※1)
【生成オプション】「DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER コマンドを追加する」もチェック
(※1)リモート環境が古いバージョンでも問題ないようにするため

3. リモート環境のデータベースにインポートする

ここもそんなに問題なかったです。
1. wpX管理パネルから、リモート環境のphpMyAdminを開く
2. WordPressで使用しているDBを選択する
3. 「インポート」タブを開き、ローカルからエスクポートしたファイル(拡張子.sql)をアップロードファイルに選ぶ
4. 最下部「実行」を押す

4. リモート環境のデータベースの情報を書き換える

「wp_options」テーブルで option_name=siteurl のデータを見るとわかりますが、
option_value のURLがローカル環境のままになっています。
そのため、このような部分だけリモート環境のURLに置換する必要があります。

手作業での置換は難しいので、Search Replace DB を利用します。
書籍やWebの記事でも取り上げられているツールです。
なので、ここでは参考ページを貼るだけにします。
リンク先の手順4でのアップロードは、FTPクライアントを使います。

WordPress移行時にURLをSQLで直接一括置換はダメ! 「Search and Replace for WordPress Databases Script」を使おう | infoScoop開発者ブログ

さて、ここらへんで手こずりました。

(苦慮1)リモート環境のホームディレクトリにブラウザからアクセスできない

上記の参考ページでいうと、手順4のとこですね。
なんかブラウザにURL入力してEnterしても、
ポート番号が勝手に追記されてページが表示できませんでした。
ブラウザのキャッシュを削除したら解決しました。

(苦慮2)それでもアクセスできない

キャッシュの問題と混在してややこしくなっていたのですが、
そもそも置換するURLの置換文字列が間違っていました。
上記の参考ページでいうと、手順6の「dry run」で確認することをお勧めします。
「wp_options」や「wp_posts」の内容が置換されると思うので、
「view changes」のリンクから変換内容が適切か確認しましょう。
私はうまくいかなくて散々悩んだ挙句、後々ここを確認して気づきました。。
こういうミスは早めに気づけると精神的に楽です。

5. リモート環境にWebブラウザからアクセス!

wpX管理パネルからでもブラウザにURL直打ちでもいいのでアクセス!
うまくいかなかったら私にはわかりません!頑張って!

おわりに

はじめはWordPressプラグインの「Duplicator」を使おうとしたのですが、
紆余曲折を経た上で、最後の最後でエラーが出て諦めました。
これで1日以上費やした。。

コンテンツの執筆が目的なので、データ移行に手間をかけては本末転倒です。
ツールは便利ですが、Web関係の仕組みを理解して使ったほうがいいですね。
仕組みを理解して使用できれば、エラーにもすぐ対処できると思います。