【发布时间】:2026-02-04 06:35:01
【问题描述】:
我有一个问题:
update `shops` set
`points` = `points` - 2,
`updated_at` = '2019-04-17 23:07:11'
where `id` = 4;
列点有一个列类型:BIGINT(20)。
现在记录中我的值是 62。当我运行上述查询时,我得到了这个错误:
SQLSTATE[22003]:数值超出范围:1690 BIGINT UNSIGNED '(`database`.`shops`.`points` - 2)'中的值超出范围
不一样。
【问题讨论】:
-
points中是否有0或null的值? -
BIGINT UNSIGNED 不能存储负值。也许减法会导致负值。
-
...
CAST(`shops` set `points` = `points` - 2 AS SIGNED)...
标签: mysql sql numbers integer-overflow