DBIx::Skinny の on_connect_do
perl の DBI で utf8 な文字列を扱う場合には、
接続時に、
$dbh->do('set names utf8');
と指定するが、
DBIx::Skinny でこれ相当のことをやるには、Model で次のように定義すればそさそう。
package MyApp::Model; use strict; use warnings; use DBIx::Skinny connect_info => +{ dsn => 'dbi:xxx', username => 'xxxx', password => 'xxxx', connect_options => { mysql_enable_utf8 => 1 } on_connect_do => [ 'SET NAMES utf8', ] };
on_connect_do で指定するのは、ドキュメントにも書いておらず、
ソースを見ないとわからなかった。
と、ここまで書いたが、
そもそも set name utf8 を使うのはお勧めできないらしい
libmysqlclientを使うプログラムはset namesをutf8であっても使ってはいけない | へぼい日記
http://blog.everqueue.com/chiba/2009/02/05/129/
set character set utf8 を指定しても、utf8 として扱うことができたけれど、よいのかな。
on_connect_do => [ 'set charcter set utf8', ]