mysql:15378
From: Etsuo SUMIYA <Etsuo SUMIYA <sumiya-e@xxxxxxxxxx>>
Date: Sat, 21 Aug 2010 10:39:39 +0900 (LMT)
Subject: [mysql 15378] Re: int column への2147483648
sumiyaといいます。 From: SAKAI Kei <sak2@xxxxxxxxxx> Subject: [mysql 15377] Re: int column への2147483648 Date: Fri, 20 Aug 2010 22:10:41 +0900 Message-ID: <20100820221039.6D79.51EA1301@xxxxxxxxxx> > > 5.1.xになって、columnの型がunsignedに変わり、 > > の部分がとても気になりました。 > バージョンアップをする過程のどこかで、signed int が > unsigned int になる操作が入ってしまったのだと推測し > ていますが、心当たりはあるでしょうか。 5.0.47の環境で、columnを作る時、signedで作ってしまい、先の結果とな りました。混乱させてしまいました。 5.0.47でも、unsigned intのcolumnには-2147483648は書けませんでした。 > > 推測ついでにもうひとつ書くと、 > おそらく 5.0.47 でも unsigned int にしたテーブルで > 同様の操作をすると、同じ結果(0)になると思います。 > 処理結果のコードを見ると、Code:1264 の Warning が > 帰ってきていませんか。メッセージはこんな感じです。 > > Out of range value adjusted for column 'c1' at row 1 こちらは、プログラムインタフェースmysql_stmt_execute()の結果は0と なり、エラーにならないんです。 > INSERT INTO t VALUES (-2147483648); > > という文を、signed 型カラムのテーブルに対して実行すれば > -2147483648 が登録されるし、 > unsigned型のテーブルに対して実行したら 0 になります。 > > この切り捨てが起きないようにする方法も、最近出た奥野さん > の本に出ていましたね。(SQL MODE の話) そうなんですか?ちなみに、何という本でしょうか?調べてみたいと思い ます。
15374 2010-08-19 20:46 [Etsuo SUMIYA <sumiya] int column への2147483648 15375 2010-08-19 21:50 ┗[Mikiya Okuno <mikiya] 15376 2010-08-20 08:23 ┗[Etsuo SUMIYA <sumiya] 15377 2010-08-20 22:10 ┗[SAKAI Kei <sak2@xxxx] -> 15378 2010-08-21 10:39 ┗[Etsuo SUMIYA <sumiya] 15379 2010-08-21 18:31 ┗[SAKAI Kei <sak2@xxxx] 15381 2010-08-24 08:56 ┗["Watanabe Tomoyuki" ]