MySQL4.1以降

今までの本番環境ではMySQLの4.0代を使っていたのであるが、新しい5.0以降にも非常に興味深い機能が追加されているためにこれを本番に使用する事が出来るのかを、最近調査している。


結論から言うと、MySQLは4.0と4.1以降では文字コードの扱いががらっと変わっている。
色々と調べた結果、今、MySQLの4.0とPHPで動いているシステムを5.0に移行するのはやめた方が良さそうだ。
MySQL5.0の導入はこれからの新しく追加されるシステムに限って行った方が良い。
それほど違いがある。


特にバイナリのMySQLを使用する場合、多くはデフォルトのキャラセットがlatin1に設定されてコンパイルされているらしく、my.cnfでサーバとクライアントのキャラセットを同じにしてもうまく動かない事が多いらしい。
クライアントからサーバに接続後、「SET CHARACTER SET hoge」なんかを発行する必要がありそうだ。


一番良いのは、やはりソースからキャラセットを指定してコンパイルするのが良いようで、これはいつもはそうしているので問題ないのだが、そうなると、サーバのプラットホームはLinuxという事になろう。(まあ、今もそうだけど)
あとは、クライアントとサーバの文字コードを同じにしたうえで、my.cnfに「skip-character-set-client-handshake」をmysqldセクションに記述する事も大切。
またはバイナリを使わないといけないんなら(Winとか)MyNAで提供されているパッチやバイナリを使用する。
PHP等のアプリで接続後、「SET NAMES キャラセット名」を発行する。
こんな感じかな。


あとは実際の環境で試して確実な環境を策定する事だろう。
とりあえず、今の4.0環境はこのままで運用。
今後のシステムは5.0とアプリの環境を調べて確証を取った上で、新規にアプリケーションの構築を実施。
こういった方針でやる事に決めた。