PHPとMySQL4.0を使用したアプリのMySQL5への移行

次に手をつける予定の案件
1年以内に廃止予定だから、とりあえず動けばいいんだ。動けば。

概要

MySQL 4.0.24、PHP 5.2.11、の環境で動いている業務用アプリのサーバー移転を行う。
移転先のバージョンは自由に選べる。

結論

mysqldをujisで運用すれば何とかなるかも。

mysql> show variables like 'char%';
-----------------------------------------+
                       | server | client |
-----------------------------------------|
character_set_client   | ujis   | ujis   |
-----------------------------------------|
character_set_database | ujis   | ujis   |
-----------------------------------------|
character_set_server   | ujis   | ujis   |
-----------------------------------------+

上記の環境を作ればよいのだから、
my.cnfを以下の設定にする。

[mysqld]
character-set-server=ujis

[mysql]
default-character-set=ujis

PHP側のソースは一切いじらない。

理想

utf8でmysqldを動かしつつ、該当のデータベースだけをeucjpmsにして動かしたかったけれど、ソースコードに手を入れないと難しそうだから断念。

それ以上に

2byte文字の1byte目で切れているデータが入っている件

追記 2011/11/15

全然理解していなかった。
それぞれの文字コードをしっかり設定してあれば自動で変換してくれるみたいだ。

mysql> show variables like 'char%';
-----------------------------------------+
                       | server | client |
-----------------------------------------|
character_set_client   | eucjpms| eucjpms|
-----------------------------------------|
character_set_database | utf8   | utf8   |
-----------------------------------------|
character_set_server   | utf8   | utf8   |
-----------------------------------------+

参考にしたサイト

SET NAMES のいらない生活 http://d.hatena.ne.jp/jrofbyr/20081228/p1
PHPmysqlを適切に扱う方法 http://rhiz.jp/id/174.html