2005年3月 5日

サーバー移転に伴うmovabletype + MySQLの引越し準備

本サイトを運営するのに利用しているレンタルサーバーの契約更新の案内が来たのだが、値段とサービス内容(容量)
を理由にロリポップに移行する決心をした。
立ち上げて間もなく、オマケにアクセス数も少ないので新規にブログを作成しても良いのだが腐ってもワシは技術者。
やはり移行を試みるべきだろう。 今回は移行準備として一番ネックと思われるMySQLの移行を試験してみた。

現在のレンタルサーバも移転先のレンタルサーバもMySQLのオペレーションはphpMyAdminというWebツールから行う事となる。

旧サーバ側のphpMyAdminにてエクスポートをクリックするとなにやら設定画面の様なものが表示される。
ディフォルトで選択されている項目に加えて、'「DROP TABLE」
を追加'
'完全な INSERT
文を作成する'
"#7D9EC0">'ファイルで保存する'にチェックを入れて実行!

するとファイル保存のダイアログが表示されるので適当なファイル名(拡張子は.sql)にてローカルに保存します。
※ここで注意!出力したファイルを秀丸等のテキストエディタで開くとファイルの先頭の方に次の2行があります。

CREATE DATABASE `アナタの旧DB名`;
USE アナタの旧DB名;

出力されたファイルは新サーバにてインポートするのですが、DBの作成権限がない限りDB名は変わってしまいます。ですので、CREATE
DATABASE文を実行してもエラーとなるだけですのでコメントアウトするか行を削除してしまいます。また、USE
"#009300">アナタの旧DB名;となっている行は新サーバでのDB名に変更する必要があります
(ロリポップのコンソール画面から予めDBを作成しておいてください)。

-- CREATE DATABASE `アナタのDB名`;
USE アナタの新DB名;

つぎは新サーバ側のphpMyAdminにてSQLのアイコンをクリック、
すると別ウィンドウが表示されるのでインポートファイルのタブをクリックします。先程保存したファイルを指定して実行すれば、
あーらMySQLの移行は完了です。

の筈ですが、インポート処理でエラー出まくりやん!工エエェェ (´д`)ェェエエ工工
どうも文字化けしているのが原因らしい。色々Webサイトを回って情報収集するがどうも文字コードの問題らしい。
phpMyAdminがutf-8に対応している必要があるのだそうだ(movabletypeの文字コードはutf-8に指定してある)。

だが、まてよ?utf-8に対応って意味がわからん。つまりどういう確認をすれば対応か非対応か判るのだろうか?
phpMyAdminのメイン画面には言語を選択するドロップダウンがあり、
この中にはutf-8が含まれており勿論コイツを選択している訳だ。これは対応されていると思ってよいのだろう。
では、なぜ文字化けしているのだろうか?出力したSQLファイルを開いてみる。
mt_templeteの内容が確かに激しく文字化けしてんぢゃん!
色々思考錯誤したけど駄目orz ....
phpMyAdminでmt_templeteテーブルの中身を覗いて見ると・・・ちゃんと見えてんぢゃん! では何が悪いのか、
これはもうファイルに出力される際によからぬ事が起きているに違いない。 もしやと思いエクスポートの際、 "#7D9EC0">'ファイルで保存する' "#000000">にチェックを入れずに実行してみた・・・ブラウザ内にSQLスクリプトが出力される。
化けとらん、化けとらんよ兄貴~!もう小躍り状態。上記のCREATE DATABASEとUSEを直して丸っとコピー、
先程化けていたファイルに上書きコピーを施した。
気を取り直して再度インポート。 お、今度はうまく行きそうだと思った矢先・・・・・エラーです、エラーで止まるとです つД`)・゚・。・゚゚・*:.。
やはりmt_templeteでエラー。エラーがあった箇所をもう一度phpMyAdminで見てみる。確かにDBの内容事態化けている?
というか変。
そういえばmobavletypeのテンプレートの画面事態変な表示されてたな・・・・・・
DBの内容も勿論おかしいのだけど、問題なのは出力されたSQL文。
"#7D9EC0">INSERT INTO `mt_template` VALUES (40, 3, 'ダイナミック・テンプレート用起動ェ, 'index', 'mtview・・・・・・・・・・ "#000000">何がおかしいかお分かりだろうか?
そう文字列と認識させる為のアポストロフィ「'」(で、良いんだっけ?)が足りないのです。 "#7D9EC0">'ダイナミック・テンプレート用起動ェ "#7D9EC0">'ダイナミック・テンプレート用起動ェ'
"#000000">となるべきです(化けているのは置いといて)。
同様の問題が数箇所ありましたので ' で閉じてやってSQLファイルを修正後に再度インポートしたらあっけなく完了しまスタ。

あ~あ、一安心。
同様の問題で悩んでる人いるのかな? そうであれば参考になれば幸いです。
あんまりお役には立てないかもしれないけれど、質問とかも歓迎しますよ?