今天晚上运营同事反馈了系统有个列表数据查询不出来,筛选某个条件又能查出数据来。当运营反馈时,立马收到线上报警邮件提示如下:
也就是抛出 MySQLDataException异常,由于定性思维的原因,一直在排查sql问题,不断尝试替换某个字段的数据拼接查询,最终还是失败了。由于经验较少,不断尝试column '15'这一列,心想没有15这个字段呀(思维方向错误了)。导致问题排查了两个小时;最后联想到INTEGER类型出错,干脆就直接查找mode里的对象与sql查询查询出来的字段作比较,最终发现其实是某个字段数据值长度突然大增(部门其他同事对接大厂时,修改了字段长度,然后我们这边的系统无意识到字段长度,还是使用Integer类型,最终导致异常出现),修改成long类型后解决,但这种修改方法也会随着时间问题变成一个坑。
总结今晚遇到的问题,就是以前菜的坑太少了,导致问题定位错误。错误日志:'1.00000539598E11' in column '15' is outside valid range for the datatype INTEGER翻译过来也就是“15”列中的“1.00000539598E11”超出了数据类型整数的有效范围。不是15那个字段,而是第15列(MB 太SB了)。因此在此做个笔记,以防以后继续犯类似思维错误。