zoukankan      html  css  js  c++  java
  • MySQL JDBC Driver 8.0+设置服务器时区

    遇到一个问题,线下环境测试数据的查询完全没有问题,但是线上环境却没法查询出数据,并且从mybatis输出的日志来看,查询参数也没有问题,数据库中数据也是存在的,查询参数类型是java.util.Date

    而且mybatis还很迷的输出了这么一句Total: 1 ,这行日志是在对mybatis开启DEBUG才会输出的

    于是,想破了头,一心想着是不是mybatis在查询结果后,从查询结果集到实体类的映射出了什么问题?

    但是又很怀疑,因为并没有任何异常抛出来

    期间想到要不用下BTrace,后来还是决定把mybatis源码过一遍看看,毕竟,即便使用BTrace,也要知道从哪里入手来排查

    吭呲吭呲的啃了一天多,mybatis太缺少注释,看起来是真的难

    找到了没有查到结果但是日志又输出 Total: 1的原因,给mybatis提了个Issue

    最后发现从代码看不出问题(主要还是不精)

    最后还是指望BTrace这些玩意了

    然后看到说阿里的Arthas比较好用些,最后就用了下,挺不错的

    然后最后跟踪的结果就是,实际查询时使用的时间和我程序计算的时间不一样,小了十三个小时,我就猜到可能是这个原因了

    最后给JdbcURL加上了serverTimezone=Aisa/Shanghai,问题解决了

    这里要说的是,如果你使用的MySQL JDBC Driver版本在8.0及以上,一定要设置这个

    一般来说,如果MySQL服务器设置了时区信息,应该是没问题的

    show variables like '%time_zone%'; 这样来查看MySQL服务器设置的时区信息

    不过如果没有设置,就可能出现不同的环境,产生这种不易发现的问题。

  • 相关阅读:
    动态规划-数字三角形V1
    二分-Aggressive cows
    Unity中的UGUI之UGUI的渲染顺序--01
    关于C#中委托的学习笔记
    Unity中的协程用法以及注意事项
    Unity中的单例方法2
    Unity中关于射线的运用——第03节 射线的实际运用
    Unity中关于射线的运用——第02节 圆形射线
    Unity中关于射线的运用——第01节 线段射线
    算法之折半查找
  • 原文地址:https://www.cnblogs.com/heartlake/p/12837620.html
Copyright © 2011-2022 走看看