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に記述する。
- 作者: ジェレミ・D.ザウドニ,デレク・J.ベリング,Jeremy D. Zawodny,Derek J. Balling,林秀幸
- 出版社/メーカー: オライリージャパン
- 発売日: 2004/10
- メディア: 単行本
- 購入: 9人 クリック: 239回
- この商品を含むブログ (53件) を見る
- 作者: とみたまさひろ,鶴田展之,鶴長鎮一,松信嘉範,坂井恵
- 出版社/メーカー: 翔泳社
- 発売日: 2007/10/10
- メディア: 単行本(ソフトカバー)
- 購入: 2人 クリック: 6回
- この商品を含むブログ (9件) を見る