Tinyint列MySQL的值超出范围

Tinyint列MySQL的值超出范围,mysql,Mysql,因此,我在MySQL 5.1上的tinyint(2)unsigned列中遇到了这个问题 上次我检查时,tinyintunsigned接受的最大值为255,参见 现在,当我尝试为所有条目更新此列时,添加一个随机生成的值,介于100和160之间,如下所示: UPDATE composition SET range = range + (FLOOR(100 + RAND() * 60)); 我收到一条智能消息,告诉我有一个超出范围的错误: 第1660行“范围”列的值超出范围 这怎么可能呢?只需验证现

因此,我在MySQL 5.1上的
tinyint(2)
unsigned列中遇到了这个问题

上次我检查时,
tinyint
unsigned接受的最大值为255,参见

现在,当我尝试为所有条目更新此列时,添加一个随机生成的值,介于100和160之间,如下所示:

UPDATE composition SET range = range + (FLOOR(100 + RAND() * 60));
我收到一条智能消息,告诉我有一个超出范围的错误:

第1660行“范围”列的值超出范围


这怎么可能呢?

只需验证现有的范围值,然后更新范围

UPDATE `composition`
SET `range`=`range`+FLOOR(100 + RAND() * 60)
WHERE `range` < 95
UPDATE`composition`
设置'range`='range`+地板(100+RAND()*60)
其中`range`<95

您确定它没有签名吗?尝试127,然后尝试128…在超出范围之前,您能确认它将接受的最大值是多少吗?如果将其设置为负数,会发生什么情况?从合成中选择最大值(范围)的结果是什么?例如,范围可能已经有200个,并且要添加到其中的最小值为100。它变成300…我检查后的最大值是67。因此,67+160(最坏情况)=225。还不到255。