Webtech Walker

mysqlのSTRICT_ALL_TABLES

mysqlでは、int型に文字列を入れようとすると0が入ったり、NOT NULL制約のカラムに値を指定しなかった場合は空文字が入ったりします。

それがいいかどうかは別として、それらを許可しないためにはsqlmodeをSTRICTALL_TABLESに設定すればいいみたい。

mysql> SET sql_mode = 'STRICT_ALL_TABLES'

DBICでこれが指定してあったからエラーになってちょっとはまったんですけどね。

my $schema = Testblog->connect(
    'dbi:mysql:testblog;host=localhost',
    'root',
    '',
    { on_connect_do => ["SET sql_mode = 'STRICT_ALL_TABLES'"] }
);

DBICで指定するときはこんな感じ。

このエントリーをはてなブックマークに追加