今更DBICでなくCDBIネタ。事情によりmy.cnfを書き換える事ができないのでset names utf8しようとしたらやり方が判らず、しばらくいらいらしたのでメモ。
環境はMySQL 5.0.18 + Class::DBI 3.000014
package MyApp::Model::CDBI;
use strict;
use base qw[ Catalyst::Model::CDBI Class::DBI::mysql ];
__PACKAGE__->config(
dsn => 'DBI:mysql:dbname=データベース名',
user => 'データベースユーザ',
password => 'データベースパスワード',
options => {},
relationships => 1
);
1;
package MyApp::Model::CDBI::Users;
use strict;
use base 'MyApp::Model::CDBI';
__PACKAGE__->db_Main->do( q(SET NAMES utf8) );
__PACKAGE__->set_up_table('users');
1;
上記はCatalystのModel例。
ちなみにDBICは下記のような感じでいけるらしい。
__PACKAGE__->connection(
'dbi:mysql:foo',
'root',
{
on_connect_do => ['SET NAMES utf8'],
},
);