mysql:14014
From: YuGo <YuGo <yu.gotou@xxxxxxxxxx>>
Date: Fri, 25 May 2007 19:09:22 +0900
Subject: [mysql 14014] Re: unsigned int に関するクエリ結果
みうらどの。 こういうデータの範囲外の受け止めてしまうのは、MySQLの特技(ふとっぱら)か も知れません。でも、 sql>SET sql_mode=STRICT_ALL_TABLES したり、my.ini[mysqld]にsql_mode=STRICT_ALL_TABLESと書いたりすれば、 エラーでけってくれるようになっているようです。 http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html 個人的には、こっちの方がまとものような気がしますが、みうらさんはどちらが おこのみでしょうか。 今のままで行くなら、 sql>UPDATE SET id = CASE WHEN (id - 100) < 0 THEN 0 ELSE (id - 100) END ; とかやってみてください。 > いつも勉強させていただいてます。 > > unsigned int に対するクエリの結果が予想と異なり > 原因が分からなかったので質問させていただきます。 > ご教授いただければ幸いです。 > よろしくお願いいたします。 > > ■MySQL > var.5.0.37 > > ■テーブル定義 > CREATE TABLE `test` ( > `id` INTEGER UNSIGNED NOT NULL DEFAULT 0, > PRIMARY KEY(`id`) > ) > > ■存在するレコード > id > --------- > 0 > > ■問題のクエリ > update test set id = id - 100; > > ■問題の結果 > 「0」になると思いきや、「4294967295」になってしまった。 > > > ※以下補足 > 下記のクエリに関しては、予想通りの結果 > ・クエリ > update test set id = -100; > ・結果 > 0 > > ・クエリ > update test set id = 100000000000; > ・結果 > 4294967295 > >
14011 2007-05-25 16:05 ["Takayuki Miura" <at] unsigned int に関するクエリ結果 14013 2007-05-25 18:42 ┣[N.Toge <toge@xxxxxxx] 14015 2007-05-25 19:22 ┃┣[MURAKAMI Tomokazu <t] 14017 2007-05-25 20:42 ┃┗["Takayuki Miura" <at] -> 14014 2007-05-25 19:09 ┗[YuGo <yu.gotou@xxxxx] 14016 2007-05-25 20:35 ┗["Takayuki Miura" <at]