• 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服务器设置的时区信息

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

  • 相关阅读:
    xss漏洞
    web日志分析(待)
    linux命令学习摘记
    浏览器的MIME映射(程序映射)
    文件上传靶场-Upload-Labs
    目录遍历用字典
    cmd、bat分割单行字符串
    iptables使用
    Spring AOP 学习(五)
    Spring 使用注解注入 学习(四)
  • 原文地址:https://www.cnblogs.com/heartlake/p/12837620.html
Copyright © 2020-2023  润新知