排查系统执行SQL与数据库直接执行结果不一致的问题

[复制链接]
发表于 2023-3-3 17:37:37 | 显示全部楼层 |阅读模式
目录

现象


  • 系统根据指定的日期范围(LocalDateTime)查询数据库,结果与直接将SQL语句查询不一致,系统查询的并不是期望日期范围的数据。
  • 通过 LocalDateTime、LocaDate、LocalDate 作为时间插入数据时,时间不对
解决

更换 mysql 的驱动包版本在 8.0.22及以上
官网bug说明:https://dev.mysql.com/doc/relnotes/connector-j/8.0/en/news-8-0-22.html

注意:考虑到规范问题,8.0.31的时候驱动包的坐标调整了!!!
8.0.31 之前maven坐标8.0.31 及以后maven坐标groupId: mysql
artifactId: mysql-connector-javagroupId: com.mysql
artifactId: mysql-connector-j过程


  • 上线之后,通过定时任务生成的报表数据有很明显的异常,用户报故
  • 在本地环境进行 debug 时,发现查询出来的结果列表和期望值不一样

结论

一切的源头都是因为我将 springboot 从 2.5.8 升级为了 2.7.8,并且在mysql驱动8.0.31的时候考虑到规范问题,修改了坐标!!!
在 spring-boot-dependencies 2.5.8 的时候,依赖的mysql驱动包版本为 8.0.27,在 2.7.8 的时候,依赖的mysql驱动包版本为 8.0.32;
升级之后,编译的时候出现如下错误:

所以就很简单的增加了一个版本  8.0.13  之后程序就能正常启动,但是却存在着上述问题
正确的做法应该是删除旧的仓库坐标,添加新的驱动坐标:
  1. <dependency>
  2.      <groupId>com.mysql</groupId>
  3.      <artifactId>mysql-connector-j</artifactId>
  4. </dependency>
复制代码
万事有因,当问题排查出来并且解决的时候,是真的舒服~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
继续阅读请点击广告

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表