Код ошибки MySQL: 1264 Значение вне диапазона для столбца 'count' в строке 1 - PullRequest
2 голосов
/ 19 ноября 2010

У меня есть код MySQL:

CREATE TABLE test_table (  
    id int(11) NOT NULL AUTO_INCREMENT,  
    count int(10) unsigned DEFAULT NULL,  
    PRIMARY KEY (id)  
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;

insert into test_table (count) values (1);
update test_table set count = IF( count -1 < 0, 0 , count -1 );
update test_table set count = IF( count -1 < 0, 0 , count -1 );

Это должно установить счет в ноль, если (count -1) < 0.

Я получаю ошибку:

Error Code: 1264 Out of range value for column 'count' at row 1` instead.

Это связано с тем, что считать int без знака. Если я использую подписанный int, это работает.

Это ошибка в MySQL? Я использую: mysql Ver 14.14 Distrib 5.1.46sp1, for Win32 (ia32)

Ответы [ 2 ]

5 голосов
/ 19 ноября 2010

Я думаю, вы должны сделать это:

UPDATE test_table
SET count = IF( count < 1, 0 , count -1 )

Значение count - 1 уменьшается, когда count равно нулю.

SELECT count, count - 1 FROM test_table;
+-------+----------------------+
| count | count - 1            |
+-------+----------------------+
| 0     | 18446744073709551615 |
| 1     |                    0 |
| 2     |                    1 |
+-------+----------------------+

Когда я пытаюсь ответить на ваш запрос, он не работает ... но не терпит неудачу так же, как вы видите.

1 голос
/ 19 ноября 2010

Если count не имеет знака и его значение равно нулю, то вычитание 1 из него дает значение вне диапазона целого числа без знака.Так что исправьте сообщение об ошибке и без ошибок, я думаю

...