mysql:15377
From: SAKAI Kei <SAKAI Kei <sak2@xxxxxxxxxx>>
Date: Fri, 20 Aug 2010 22:10:41 +0900
Subject: [mysql 15377] Re: int column への2147483648
坂井です sumiya さん、こんにちは。横から失礼します。 > 5.1.xになって、columnの型がunsignedに変わり、 の部分がとても気になりました。 バージョンアップをする過程のどこかで、signed int が unsigned int になる操作が入ってしまったのだと推測し ていますが、心当たりはあるでしょうか。 推測ついでにもうひとつ書くと、 おそらく 5.0.47 でも unsigned int にしたテーブルで 同様の操作をすると、同じ結果(0)になると思います。 処理結果のコードを見ると、Code:1264 の Warning が 帰ってきていませんか。メッセージはこんな感じです。 Out of range value adjusted for column 'c1' at row 1 これは、unsigned のカラムに負の数字を与えたときに 値がゼロに切り捨て(?)られたために出る警告です。 INSERT INTO t VALUES (-2147483648); という文を、signed 型カラムのテーブルに対して実行すれば -2147483648 が登録されるし、 unsigned型のテーブルに対して実行したら 0 になります。 この切り捨てが起きないようにする方法も、最近出た奥野さん の本に出ていましたね。(SQL MODE の話) Thank you On Fri, 20 Aug 2010 08:23:53 +0900 (LMT) Etsuo SUMIYA <sumiya-e@xxxxxxxxxx> wrote: > sumiyaといいますす。お世話になっております。 > > From: Mikiya Okuno <mikiya.okuno@xxxxxxxxxx> > Subject: [mysql 15375] Re: int column への2147483648 > Date: Thu, 19 Aug 2010 21:50:03 +0900 > Message-ID: <4C6D287B.3010009@xxxxxxxxxx> > > > bind[0].is_unsigned = 1にしましょう。 > > そうしないと符号付き32ビット整数の最大値=2147483647に > > 引っかかってしまいます。 > > うーん!そうだったんですか?確かに、マニュアルを見ると、記載があり > ますが、サンプルコーディングには記載がないので、見落としました。 > > アプリを修正してみたところ、動作しました。 > > 実は、このアプリ、5.0.24aの頃から使っているアプリなんですが、手元 > の環境(5.0.47)では、show create table の結果は、 > > CREATE TABLE `t` ( > `c1` int(11) default NULL > ) ENGINE=MyISAM DEFAULT CHARSET=sjis > > int がsignedで定義され、先のアプリを実行すると、 > > mysql> select * from t; > +-------------+ > | c1 | > +-------------+ > | 2147483647 | > | -2147483648 | > +-------------+ > 2 rows in set (0.03 sec) > > となり、書き込みが行えます。5.1.xになって、columnの型がunsignedに > 変わり、is_unsigned = 1としないといけなくなったということでしょう > か? > > アプリの修正を行います。ありがとうございました。 > > >
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" ]