MySQL错误代码:1264超出第1行列'count'的范围值

Pol*_*hix 2 mysql underflow

我有一些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 );
Run Code Online (Sandbox Code Playgroud)

如果,这应该将计数设置为零(count -1) < 0.

我收到一个错误:

Error Code: 1264 Out of range value for column 'count' at row 1` instead.
Run Code Online (Sandbox Code Playgroud)

这是因为count是一个unsigned int.如果我使用signed int就可以了.

这是MySQL中的错误吗?我正在使用: mysql Ver 14.14 Distrib 5.1.46sp1, for Win32 (ia32)

Mar*_*ers 5

我想你应该这样做:

UPDATE test_table
SET count = IF( count < 1, 0 , count -1 )
Run Code Online (Sandbox Code Playgroud)

count - 1count为零时,下溢的值.

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

当我尝试你的查询时,它不起作用......但它不会以你看到的相同方式失败.