Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

状況

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

例えば

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

対策

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

SET SESSION sql_mode='TRADITIONAL';

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした