>>技术应用:MySQL查询出现:Query was empty

一、问题出现

今日同事那边暴露出来一个错误,然后截图如下:
>>技术应用:MySQL查询出现:Query was empty_第1张图片
根据问题出现的原因,大体意思是查询是空或无效的 SQL 语句或SQL 语句为空,根据截图自己也百度了下具体的问题,意思差多不,但是还是不知道SQL语句为啥为空,然后根据接口对应的SQL,然后一步步去解析问题出现的原因。

二、问题出现的可能性猜测

根据网上搜寻的答案,大体上有下面几种可能:
1、SQL不存在;
2、MyBatis批量修改出现mysql的SQL不存在,使用的是模版QL;
3、mysql中数据类型decimal没有设置默认值,且在执行过程中容易出现NPE;

三、问题核对

核对了上述几种情况,发现我这边字段类型使用的是decimal,但是不足以造成这种情况,已经核对了SQL脚本正确且已经形成,因为在另一个项目中也是这种情况,并没有造成Query was empty,此时排除1。当前项目中并没有使用到MyBatis,而是使用的Spring JdbcTemplate,所以也排除了2。针对3这种情况,我这边的的确确是使用的这种数据类型,但在另外一个项目也正常显示,我把SQL脚本放到数据库也是可以正常显示数据,所以也排除了这个3。

四、具体原因分析

那具体是什么原因呢?后来了解到,前端在调用接口时,将数据接口调用一次之后存储到了redis,然后每次读取接口并不是实时从项目中获取,而是读取的redis中的数据,而此时数据库中的SQL模版我这边已经替换掉了,但是redis并没有更新,导致找不到SQL模版。

五、解决办法

解决办法:清理掉redis的数据,重新调取接口即可。

六、参考资料

参考资料:
1、https://blog.csdn.net/qq_38776922/article/details/78522365
2、https://www.php.cn/mysql-tutorials-72530.html
3、https://blog.csdn.net/weixin_41751625/article/details/79465160
4、https://blog.csdn.net/u012373281/article/details/109530924
5、https://blog.csdn.net/java_zhangshuai/article/details/98077548

你可能感兴趣的:(#,数据|数据库,mysql,mybatis)