MySQL5.5でDBD::mysqlを使う時の注意

MySQLを5.5にアップデートし、my.cnfで以下のように文字セットの設定をきちんとしているとする。

[client]
default-character-set=cp932
[mysqld]
character-set-server=cp932
[mysqldump]
default-character-set=cp932
[mysql]
default-character-set=cp932


mysql> show variables like 'character\_set%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | cp932 |
| character_set_connection | cp932 |
| character_set_database | cp932 |
| character_set_filesystem | binary |
| character_set_results | cp932 |
| character_set_server | cp932 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+

この状態で最新のDBD::mysql v4.019 以上を入れてしまったら、スクリプトの接続部分に以下を追加すること。
追加しないとクライアント側が「latin1」となり、日本語が全て「?」になってしまうという恐ろしい状態になる。

【修正前】

$dbh = DBI->connect("DBI:mysql:table_name:localhost", user, pass);

【修正後】

$dbh = DBI->connect("DBI:mysql:table_name:localhost;mysql_read_default_file=/etc/my.cnf", user, pass);

my.cnfの位置が不明な場合は自分が設置できるディレクトリに、以下の内容を書いて保存する。
【my_perl.cnf】

[perl]
default-character-set=cp932

そしてスクリプトの接続部を以下のようにする。

$dbh = DBI->connect("DBI:mysql:table_name:localhost;mysql_read_default_group=perl;mysql_read_default_file=/my/dir/my_perl.cnf", user, pass);


【追記】
あら、、、、
mysql_read_default_file は、v4.019からではなく随分前から使えているんですね(汗
激しく誤解していました。