返回列表 发帖
查看: 3571|回复: 1

[新问题] DZ有很多sql字段做减法的命令会直接导致程序崩溃:

12

主题

87

回帖

220

积分

应用开发者

贡献
1 点
金币
71 个
发表于 2019-11-11 14:56:41 | 显示全部楼层 |阅读模式
BUG反馈
程序版本: X3.4
浏览器: Chrome 
BUG地址: 隐藏内容
BUG截图: -
测试用户名: 隐藏内容
测试密码: 隐藏内容
错误代码:
  1. (1690) BIGINT UNSIGNED value is out of range in
复制代码


错误原因: 由于字段的属性定义的是UNSIGNED(即字段须不带符号大于等于数), heats,replies, dateline等字段,

然后做减法后如果特殊情况下小于了0, mysql会直接终止这个当前执行(而不会选择最小数0), 这样就导致程序崩溃出错了,

有时候可能会导致严重问题破坏数据库, 比如前面其他表的数据正常写入了, 后面还需要继续写入另外表时却失败了

BUG文件参考: source/class/table/table_common_searchindex.php

第44行有个$timestamp-dateline是否小于两次搜索间隔设置数的判断, 如果相减小于了0的话直接崩溃抛出错误了
我知道答案 回答被采纳将会获得1 贡献 已有1人回答
回复

使用道具 举报

12

主题

87

回帖

220

积分

应用开发者

贡献
1 点
金币
71 个
 楼主| 发表于 2019-11-11 15:01:23 | 显示全部楼层
$timestamp-dateline应改成:$timestamp-CAST(`dateline` AS SIGNED)

其它地方也还有很多像这类有可能导致出错的字段减法判断的命令
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 关注公众号
  • 有偿服务微信
  • 有偿服务QQ

手机版|小黑屋|Discuz! 官方交流社区 ( 皖ICP备16010102号 |皖公网安备34010302002376号 )|网站地图|star

GMT+8, 2024-4-25 22:35 , Processed in 0.038250 second(s), 7 queries , Redis On.

Powered by Discuz! W1.0 Licensed

Cpoyright © 2001-2024 Discuz! Team.

关灯 在本版发帖
有偿服务QQ
有偿服务微信
返回顶部
快速回复 返回顶部 返回列表