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后台批量取消用户精华的操作需要增加判断恩。。。。 虽然一般来说技术人员使用该功能能避免该问题,但对于不懂技术的编辑来说的话就会导致数据错误了。。
sql导致数据溢出
November 11th, 2008 by Dream☆Wing Leave a reply »
Advertisement