パンプキンスパイスラテ

IT系のことが多めの日記帳です

MySQLの設定によって、カラムの制限を越えたものを入れようとした時の挙動が異なる件

エラーになって処理が終わるか、制限値までカットされて保存されるか、の違い。
http://q.hatena.ne.jp/1184841779
http://dev.mysql.com/doc/refman/5.1/ja/constraint-invalid-data.html
my.iniの、sql-modeの値をみればいいらしい。
5.0.2以降では、「STRICT_TRANS_TABLES」が標準で入ってしまって、厳密なチェックになった模様。
普通の処理だったら、まぁMySQLのエラーを出すまえに、アプリ側でチェックしなきゃいけないんだけど、バッチ処理の時は、エラーにならずに切り捨てられて欲しいことが多そう。
今日なんて、10万行以上のCSVデータを時間かかって取り込んだら、MySQLのエラーに引っかかって処理が終わってしまったという、悲しい出来事がありました。

sql-mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

厳密チェックをしないなら上記のように「STRICT_TRANS_TABLES」を外して、my.iniに記述する。

実践ハイパフォーマンスMySQL

実践ハイパフォーマンスMySQL

MySQL 辞典 (Desktop reference)

MySQL 辞典 (Desktop reference)