phpMyAdmin : してログ

開発当初は、PHP5 + MySQL5 で行く予定のプロジェクトが、急遽 PHP4 + MySQL4 の環境で動かさなければならなくなって、開発を進めてきた DB をダウングレードする必要に迫られた。考えるだけで苦労しそうな命題なだけに、「えぇ〜新しいサーバー買おうよぉ」と言いたいのを我慢してとにかくトライしてみることにした。

まず出来たら儲けもんだと、phpMyAdmin からエクスポート&インポートを試してみたけど、全くだめ。文字化けしている。GUIだと逆にどう設定したらいいのか分からないので、早々に諦めコマンドでダンプすることにする。とりあえずリストアするのは MySQL4 なので、--compatible=mysql40 を試してみるけど、やっぱり文字コード周りでうまく行ってないっぽいエラーが出る。けど、エクスポート自体は下記コマンドで OK っぽい。

mysqldump --compatible=mysql40 --default-character-set=ujis --database xoops > xoops.sql

出来上がりの xoops.sql を見ても、文字化けしてない。ちなみに、これは EUC の文字コードで xoops という db をダンプするという指定だ。

で、リストア時のエラーを良く見てみると、なんか DB 定義 SQL の前後で、文字コードを保存して一時的に変更、定義後に元に戻す、というようなことをやっている。もしや、これいらないんじゃないかと思い、試しにこの3行をすっぱり削除してみた。ちょっと気の利いたテキストエディタで置き換えすれば、3回の操作で修正完了。

こいつをリストアに掛けてみると、おぉ幾つかテーブルが作成された! 文字化けも OK だ。

まだ途中でエラー停止してしまっているので、エラーメッセージを確認してみる。「varchar(256)」これだ。そんな制限あったかどうだか分からないが、varchar は 255 までらしい。ちなみに、ccenter というモジュールの email フィールドの定義部分だった。まぁ1文字くらい大丈夫だろうと、varchar(255) に修正して、リトライしたら、全テーブル移行に成功しちゃいました。

いや〜、心配だったけど、やり方さえ分かってしまえば、もう安心。

※この記事は「Yahoo!ブログ - HDRp」からの転載です