遇到一个问题:项目jar包扫描后,升级了好多jar包,包括mysql的驱动jar包升级到了8.0版本以上。升级后从mysql中查出的时候,全都比数据库的时间多13小时,而且这些时间存到数据库的时间,有些是正确的时间,有时比正确时间少13小时,这样返回给前端的时间就不准确,解决这个问题只要在springboot的数据库连接配置中增加一段配置就能解决问题
spring:
datasource:
url:jdbc:mysql://localhost:3306/mydb3?serverTimezone=GMT%2B8&useSSL=false
这个时区要设置好,不然会出现时差,
如果你设置serverTimezone=UTC,连接不报错,
但是我们在用java代码插入到数据库时间的时候却出现了问题。
比如在java代码里面插入的时间为:2018-06-24 17:29:56
但是在数据库里面显示的时间却为:2018-06-24 09:29:56
有了8个小时的时差
UTC代表的是全球标准时间 ,但是我们使用的时间是北京时区也就是东八区,领先UTC八个小时。
//北京时间==东八区时间!=北京当地时间
serverTimezone=GMT%2B8
//或者使用上海时间
serverTimezone=Asia/Shanghai
我不确定为什么我的时间相差13小时,加上这段设置也能解决问题,应该是之前我既没有设置UTC,也没有设置东八区,使用默认的,也许就差了13小时
以上为百度得来
===================================
公司实操:
spring.datasource.druid.url=jdbc:mysql://服务器地址/数据库名?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true