mysql无符号整型自减运算时溢出的解决
作者: 郑晓 分类: PHP 发布于: 2015-12-07 17:52 浏览:12,541 评论(6)
在mysql中给一个无符号整型字段做自减运算时,如果结果小于0,将直接溢出,并没有报错。
正常情况应该会报一个BIGINT UNSIGNED value is out of range的错误,至少我本地的mysql是这样的,但线上的mysql中却能正常执行,然后字段的值变成了四十多亿4294967295。。。
可能是由于mysql的配置问题导致的,但我没找到如何配置,也没有权限配置。所以只能从程序上下手。
程序生成的sql本来是类似这样的:
update table set field=field-1 where xxx=xxx;
自减1,如果要判断结果的话,还得去查一下库吧??
所以我使用了这种办法。
把field=field-1改成:
field=convert(field+(-1), signed)
这样就解决了,在相减时如果值是负值,会直接是0。
本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。
本文永久链接: https://www.zh30.com/mysql-unsigned-value-is-out.html
mysql无符号整型自减运算时溢出的解决:目前有6 条留言
哈哈哈
很好,感谢!
好久没来看看了、2016发大财行大运 54好书网 致上
看看!
mysql不懂啊,@李洋博客
其实都差不多。