logo_mysql昨日と今日で、3本のMySQLデータ移行を行う。全てMovabeleType3.37のデータで、データベースにはMySQLを使っているということだ。

引っ越し元のMySQLのバージョンは3.23.58、PHPのバージョンは 4.3.2 文字コード euc-jp
引っ越し先のMySQLのバージョンは5.0.45、PHPのバージョンは 5.1.6 文字コード utf-8

この条件で、引っ越し先でMT3.3xで動かそうとすれば、文字化けはほぼ避けられない、というのが、あたしの経験則なのであるが、今回は、MT4.23pro へのバージョンアップも同時にやってしまうことになっていて、これも経験則なのだけれども、MT4.2Xpro にバージョンアップしてしまうのなら文字化け問題は解消する。


phpMyAdminを使う

データ3本のうち2本は、さほど大きなものではなかったので、phpMyAdminでダンプしてもらったデータを送ってもらい※1、文字コードを utf-8 に変換して、gzip形式に圧縮してから phyMyAdminでインポートした。引っ越し先では、既にデータベースは作成してもらっていたので、ダンプしたデータの次の2行は消す。

CREATE DATABASE `hogehoge`;
USE hogehoge;

これはあっさりと終わるかと思いきや、1本ログのデータが大量にあってそこで引っかかる。なので直接ログデータを削除して再試行してみればすんなりと終わる。

インポートしたデータをダンプし、文字化けがないことを確認してMT3.37で接続。ログインは問題なく出来たが、ブログの一覧も記事も全てが、例の ???????????? 状態に文字化け。なのでここでは何もしない。ただMT3.3で覗いてみただけである。

次に あらかじめインストールしてあるMT4.23pro で接続※2。データベースのバージョンアップを終了してログイン。すると文字化けはなくなるのである。なぜかは知らないが、とりあえずはデータの移行とMTのバージョンアップは無事移行終了(たぶん)。

問題は残りの1本で、これが厄介な代物であることは承知していた。ブログ数は41もあり、そのデータを納めたこのファイルは14MBを超えていて、gzip形式にしても2.7MB程ある。この手の大きなデータはphpMyAdminが使えないのが普通なのであって、通常はコマンドでの操作となる。

けれど、試し(というか動作確認のため)に phpMyAdminを使ってみれば、PHPで設定されているファイルサイズ(最長: 2,048 KiB)を超えていますよ、とはねられる。その旨引っ越し先に連絡したら

memory_limit = 16M → 40M (PHPが扱う最大メモリサイズ)
post_max_size = 8M → 20M (POSTデータに許可される最大サイズ)
upload_max_filesize = 2M → 5M (アップロードされるファイルの最大サイズ)
max_allowed_packetは10M

に設定し直してくれた。これで再度phpMyAdminでのインポートを試みるも結局はダメ。phpMyAdminは有料なんだよな。

コマンドを使ってインポートする

しょうがないので、コマンドでインポートすることにした。ただしこの場合 phpMyAdminでダンプしたモノではなく、念のために送ってもらっていた、コマンドを使ってダンプしたものを使った。

$ mysql hogehoge < hoehoge.sql -u XXXX -p

これだけ(というかあたしの知っているのはこんなものしかない)。しかしインポートはうまくいったようなので、phpMyAdminで確認してみれば、ちゃんと20個のテーブルが見えた。※2 後は先の2本と同じ手順でMT4.23proへのバージョンアップまで無事終了。41個のブログのサイトパスを変更し、再構築、そして出力されたページを確認。一応問題はみつからない。たぶん大丈夫だろう。

※注記

  1. 引っ越し元はroot権限のないサーバなので、データはダンプをお願いして送ってもらうしかないのである。
  2. MTのアップデートは、古いバージョンは削除しないで、ホルダの名前を変えて新規にインストールを行い、両方使えるようにして置いた方がよい。→MovableType4.2へのアップグレード。参照
  3. MT3.37では20個のテーブル。MT4.23では39個のテーブル。