本番環境とローカル環境(Xamp)間の移行でMySQL文からサイトURLを一括変更をする方法
このサイトのローカル環境から本番環境にアップロードする際にデータベース内のURLに変える必要が出てきたのでSQL文の勉強も兼ねてSQL文から更新を行ったので実行してみる。なお、以下の環境を前提とする
- ・wordpressを使用したwebサイト
- ・ローカルのデータベースはXAMPPに付随するPHPMyAdminを使用
- ・本番環境のサーバーはXServerを使用
SQL文の勉強の方に見ている方も、実際使うとなるとこんな風に使うんだなと思って続きを見ていただけると幸いです。
ローカル環境のデータをエクスポートする
PHPMyAdminが画面が出てくるのでログインした後に出てくるタスクバーのエクスポートを押す。エクスポートを押したらテンプレート名をテーブル名と同じにして入力し、右下の実行ボタンを押す。
なお、mySQLではなくObjectBrowserを使用した場合でも、エクスポートをすればよいのだが、画面やファイル形式が異なっているので、補足としてリンクを貼り付けておく。
公開用サーバーにデータをインポートする
ローカル環境のURLが入っているデータをどこであるかを確認する
列の値を検索する関数の基本形は以下の通りである
SELECT (表示したい列) FROM '表の名前' WHERE 検索条件。
また、ここでは前方一致検索であるので、検索条件は以下のようになる。
(検索する文字列) LIKE '%(URL)%'
次に、SQL文の入力欄についての説明に移る、PHPMyAdminのメニューバーにある「SQL」のボタンをクリックする。
クリックすると、テキストを入力できる部分が出てくるはずなので、そこにSQL文を記載すればよい。
なお、ワードプレスないのデ-タべ-スを調べてみた結果、以下の表名、列名にURLが含まれているデータが検索された。なお、データベース名のwp_の部分はサイト作成者が設定したデータベース名となる
(例wp2_と設定したらwp_optionsではなくwp2_optionsになる等)
表名がwp_options、列名がoption_value
SELECT * FROM `wp_options` WHERE `option_value`LIKE '%http://workbooks%'
表名がwp_posts、列名をpost_contents
SELECT * FROM `wp_posts` WHERE `post_content`LIKE '%http://workbooks%'
表名がwp_post、列名をguid
SELECT * FROM `wp_posts` WHERE `guid`LIKE '%http://workbooks%'
該当箇所にSQL文を記載を終えたら、右下の方にある「実行」のボタンを押す。
なお、実行が成功して、データが存在していると、以下のようになる。
ローカル環境のURLを本番用のURLに置換する
テーブルのデータの更新の基本形は以下の通りである。
UPDATE [テーブル名] SET [列名]=値 WHERE 対象行の条件
そのためこれを指定の場所に入力すればよい。入力する場所はSELECT文の場合と同じであり、PHPMyAdminの上のメニューバーから「SQL」のボタンをおすことテキストエディタが出てくるはずである。
テキストエディタに以下のSQL文を入力する。
UPDATE テーブル名 SET 列名=REPLACE(列名, '変更前URL', '変更後URL');
入力を終えたら、右下の「実行」のボタンを押す。
成功すると、ローカル環境のURLのデータがサーバーのURLに変更されているはずである。