我有一个包含字段名称stock的表(带有unsigned检查的double值) 表结构
id stock
1 1.86
当我尝试更新某些值(如1.86,1.36)时,会给出此错误
Out of range value for column 'stock' at row 1
这是我的更新查询
Update sample set stock = stock - 1.86;
除此值外的所有其他点值更新 我使用的是Mysql Version 5.6
有什么建议吗?
修改
我试试这个
SELECT a.stock,a.`stock` - 1.36 FROM `sample` a;
结果是
stock a.`stock` - 1.36
1.36 -0.00
如果像我这样更改我的查询
SELECT a.stock,(ROUND(a.`stock`,2) - 1.36) FROM `sample` a;
结果是
stock (ROUND(a.`stock`,2) - 1.36)
1.36 0.00
我现在如何管理这个问题。我希望它是一个mysql Bug。
答案 0 :(得分:1)
使用取消选中 UNSIGNED将列类型更改为 DOUBLE(5,2)。
无符号类型可用于仅允许列中的非负数字,或者当您需要更大的列的上限数字范围时。例如,如果INT列为UNSIGNED,则列的范围大小相同,但其端点从-2147483648和2147483647更改为0和4294967295。
希望这会有所帮助。