2010年8月21日

[mysql 15378] Re: int columnへの2147483648

sumiyaといいます。

From: SAKAI Kei <sak2@xxxxx>
Subject: [mysql 15377] Re: int column への2147483648
Date: Fri, 20 Aug 2010 22:10:41 +0900
Message-ID: <20100820221039.6D79.51EA1301@xxxxx>

> > 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 の話)

そうなんですか?ちなみに、何という本でしょうか?調べてみたいと思い
ます。


投稿者 xml-rpc : 2010年8月21日 10:39
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/97815
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。