问题描述
用户在登录时,前端调用查询接口,查询版本号,后台执行SQL报错,报错显示无此字段。 此SQL是属于上一个版本的sql语句,在这个版本已经修改,所以问题现象出现的就比较奇怪了。
原因分析:
1.首先,根据报错定位了到了现有代码文件,到具体的SQL,检查后发现是最新的SQL,而非旧SQL
2.检查此字段是否删除干净,是否留有遗漏导致,发现无此字段
3.检查生产jar包,看是否jar打包出现问题,里面代码未替换导致,发现jar包中代码也是最新的SQL
4.检查日志,但是日志无报错信息,均为新代码正常SQL
5.检查nacos,根据现象判断,程序必须执行,考虑是否有无其他服务注册到system,且该服务代码为上一版本。由于该项目部署了两套系统,一套投入使用,一套备份使用,但是负载域名为为同一个域名,可能存在转发错误。检查后发现nacos服务注册正确,A服务归属nacosA,B服务归属nacosB。但是检查B服务日志时,发现报错信息,得出结论,确实在服务转发时出现错误,转发到了备用系统调用
问题总结:
1.当生产上出现这种奇怪错误的时候,尤其是存在双系统,一套使用,一套供备份的时候,一个是要冷静的分析,一步步先排除代码及jar包层面上的原因。一个是要大胆假设,是否存在其他服务注册上,或者转发到其他服务的可能。