Posts Tagged ‘溢出’

sql导致数据溢出

November 11th, 2008
update cdb_members set digestposts = digestposts-1 where ...

这样对于digestposts(smallint(6) unsigned) = 0时会被设为65535

smallint(6) unsigned:是指16字节无符号变量,从0-65535

刚才我试了一下下面两个语句
update cdb_members set digestposts = -1 where ...
这时数据里面显示为0
update cdb_members set digestposts = digestposts-1 where ...
这时数据里面显示为65535

说明mysql对两种语句的越界处理不相同

所以DZ后台批量取消用户精华的操作需要增加判断恩。。。。
虽然一般来说技术人员使用该功能能避免该问题,但对于不懂技术的编辑来说的话就会导致数据错误了。。
  • Share/Save/Bookmark