気まぐれで、当サイトのMySQLを、4.0.26 から 5.0.13にバージョンアップしてみました。ポイントは、
- やはり、Migration Toolを使っても、MySQLの管理用DB「mysql」の移行は簡単にならない。作り直した方が早い。
- その他の通常DBであれば、物理ファイルコピーによる移行で、ほぼ問題ないのではないか? …いや、MySQLのエラーログに「no or invalid character set, and default character set is multi-byte, so character column sizes may have changed」と記録され続けるのはよろしくないか…。でもそれは、MySQL Administrator でテーブル設定を更新することで、簡単に修正可能。
- 認証パスワードの暗号強度を、Ver4.0と同程度に落とす(my.ini内のold_passwordsや、old_password()関数を使用)と、かねやんMySQLAdminも、とりあえずは使える。暗号強度を落とさないと、PHPからも接続できない。
- Windowsバイナリ版だと、mysqld-nt.exeをWindowsサービスに登録するので、InnoDB利用のためには、mysqld-max-ntに変更する必要がある。MySQL Administrator で、簡単に変更できる。
- 各DB毎の文字コード設定はdb.optファイルで可能ではあるが、ソ\ートなどでdefault-character-setが効いてしまう部分が多々ある。現状、db.optファイルの使いどころはビミョーなのではないか?
- Shift_JISを利用するために、Indexファイルとsjis.confファイルが必要なのは、MySQL4.1と同じ。
で、ついでにPHP 5.0.5も導入しちゃおうかと思ったんですけど、PHP5にすると、MySQL5から取得した文字が完全に文字化けしました。どうも、libmysql.dllが2byte文字に対応してないような気がする。mysqli_character_set_name()関数やmysql_client_encoding()関数の戻り値が「laten1」になっちゃいますもの。それでも、MySQLをVersion 4.0に戻すと正常に表示されているように見える。暗号強度の件も含めて、MySQL 4.1から導入された文字コードの新しい取り扱い方に、Windows用のPHPが対応できていないようだ。
【OKな組合せ】 MySQL4.0 & PHP4.4、 MySQL4.0 & PHP5、 MySQL5|4.1 & PHP4.4
【NGな組合せ】 MySQL5|4.1 & PHP5
また、PHP 5.0.5では、参照名のないメソッド引数はエラーになる。これで、ちょっとハマリかけた。
# WordPress 0.72をPHP5に対応させるのは、面倒そうだなぁ…。そろそろ大きな構成変更が必要かな…