[前][次][番号順一覧][スレッド一覧]

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" ]