MySQLの自動変換が厄介な時の設定

  • 9
    Like
  • 0
    Comment
More than 1 year has passed since last update.

状況

親切なのか不親切なのか、カラムの型と異なったデータを挿入してもそれとなく丸めたり切ったりしてwarningを吐きつつもinsertやupdateに成功しちゃったりしてて困っている。

例えば

tinyintにそれ以上の値を入れたら丸めてくれたり、サイズ以上の文字列を入れるとその分カットして入れてくれたり・・・

対策

上記のようなものに関しては、

SET SESSION sql_mode='TRADITIONAL';

こんな感じでsql_modeを設定することで厳密にエラーとしてみてくれるようになります。
環境に応じて、SESSIONでなくGLOBALにしたり、cnfに書いたりすれば良いかと思います。
型チェックを厳格にするのはこれでいいと思いますが、他にも色々と細かく制御可能なので、
詳しくは
4.2.6. SQL モード
ココらへんを。