问题现象:
本来5.1来了之后的第一个假期的到来,本来想着好好休整一下,突然中了程序员定律,下班6点的时候,发到生产环境的数据展示出现了问题,展示时间多了13个小时。
开始排查:
突然懵了,因为一般情况下服务器或者数据库时区问题相差8个小时的,挺常见,这13个小时还是第一次遇见。
关键是本机、开发、测试环境都是正常的,就生产环境出了问题,查看了服务器时间,正常;数据库时间,正常,
然后查看是不是前端JS的时间转换出了问题,测试正常,F12查看请求回来的结果,发现请求回来的结果大了13个小时。
初现端倪:
至此,问题范围就缩小了,问题出在从数据库查询出来的结果数据出了问题,由于数据库的时间是没有问题的。
问题解决:
这时候就需要知道从数据库查询时间到后端这一段的原理了,在网上找到了这篇文章:
https://blog.csdn.net/weixin_39743920/article/details/120412165
JDBC 误认为会话时区在 CST-5
JBDC 把 Timestamp+0 转为 CST-5 的 String-5
MySQL 认为会话时区在 CST+8,将 String-5 转为 Timestamp-13
然后对比生产环境和测试环境的配置,少了serverTimezone=GMT%2B8,配置后重启,问题解决。
这个问题,耽误了2个小时,好不容易的假期。