请选择 进入手机版 | 继续访问电脑版
查看: 1759|回复: 1

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

[复制链接]

12

主题

87

回帖

215

积分

应用开发者

贡献
0 点
金币
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

回帖

215

积分

应用开发者

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

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

使用道具 举报

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

本版积分规则