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

  本篇文章为你整理了排查系统执行SQL与数据库直接执行结果不一致的问题()的详细内容,包含有 排查系统执行SQL与数据库直接执行结果不一致的问题,希望能帮助你了解 排查系统执行SQL与数据库直接执行结果不一致的问题。

  目录现象解决过程结论

  系统根据指定的日期范围(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的时候驱动包的坐标调整了!!!

  
groupId: mysql
artifactId: mysql-connector-java

  groupId: com.mysql
artifactId: mysql-connector-j

  
开启了 mybatis 的sql日志打印,将日志打印在控制台,将其拿到数据库执行,结果与应用查询得到的数据量不同

  
原文说的是8.0以上都有时区问题,之后就是各种测试,发现并不是所有8以上版本都有问题,然后就是二分法找到没有此问题的版本(8.0.22)
 

  
一切的源头都是因为我将 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 之后程序就能正常启动,但是却存在着上述问题

  正确的做法应该是删除旧的仓库坐标,添加新的驱动坐标:

  

 !-- 版本号已由 springboot 自动配置 -- 

 

   dependency

   groupId com.mysql /groupId

   artifactId mysql-connector-j /artifactId

   /dependency

  

 

  万事有因,当问题排查出来并且解决的时候,是真的舒服~

  以上就是排查系统执行SQL与数据库直接执行结果不一致的问题()的详细内容,想要了解更多 排查系统执行SQL与数据库直接执行结果不一致的问题的内容,请持续关注盛行IT软件开发工作室。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: