mysql修改字段类型为smallint_mysql更新unsigned的
java编写一个person类smallint。。。
$sql = "UPDATE `dzxbbs_common_member` SET newprompt=newprompt-1 WHERE uid='{$uid}'";
`dzxbbs_common_member` 表中 newprompt的类型是 smallint unsigned 长度为6的类型。
mysql服务启动重启都点不了当newprompt值为0时,执⾏这条sql语句,得到了意想不到的结果newprompt字段值变成了65535。代码border bottom
出现这个问题的服务器版本是 mysql 5.1.38-log。
解决这个需要设置这个参数 sql_mode="NO_UNSIGNED_SUBTRACTION" 启⽤这个选项后两个UNSIGNED类型相减返回SIGNED类型。matlab2020多大内存
我在本地测试的结果是报错
#1690 – BIGINT UNSIGNED value is out of range in '(`test`.`test`.`view` – 1)'mysql语句分类
服务器版本: mysql 5.5.16
开源电商系统ecshop商品库存也存在突然变成65535的问题。
Mysql5 为了速度,只存放数⼆进制数据,⽽且在加减运算中,也是⼆进制的运算.
所以在使⽤unsigned 是⼩⼼0-1 的操作.尽量在这类操作前先做⼀个判断.
如果直接在程序⾥进⾏判定,难免会出现数据错误,因为有⼀点点时间内数据是放在内存的,⽽没放进库⾥,最好的办法还是直接送出sql 语句进⾏修改,这⾥mysql5有解决办法 CONVERT( 字段 + (要加减的数字) AS SIGNED )就可以了。
例如:UPDATE `user` SET `tk` = CONVERT( tk + (-8) ,SIGNED ) WHERE `id` = '133'
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论