spring boot 2.0采用com.mysql.cj.jdbc.Driver数据库驱动引发的系统时间不一致问题

首先简单描述一下项目情况,老板新注册了一家公司,既然有公司了肯定得有个公司门户网站。现在已经是web 2.0时代了,网站内容不可能再像以前那样全部采用静态html页面。于是开发了一个内容管理系统,简称是CMS,网站的栏目和文章全部通过该CMS系统进行后台管理,实现动态编辑、发布。

系统采用时下最流行的spring boot框架,版本是2.1.11.RELEASE,数据库采用mysql 5.6,视图层页面采用thymeleaf和layui实现,数据层通过mybatis进行数据库读写。

刚开始,数据库配置application.properties为

但是启动应用的时候报出com.mysql.jdbc.Driver已经过期,并且给出提示新的驱动是com.mysql.cj.jdbc.Driver。我本人是处女座,完美主义者,于是把数据库驱动修改为com.mysql.cj.jdbc.Driver。

日志提示信息:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.

 再次启动应用,没有驱动过期的提示了。

那么接下来就是对系统进行查询、新增、修改、删除等功能测试,但是发现create_date(创建时间)、update_date(修改时间)、publish_date(发布时间)等表字段保存的时间值跟当前系统时间不一致,少了12个小时,如图所示。

起初是怀疑主机linux时间的问题,于是分别登陆应用主机和数据库主机进行date命令查看时间,发现时间两台主机的时间都是对的,跟北京时间一致。

查询数据库时间,跟当前系统时间一致,也是对的。

于是网上搜索,还真找到了文章:

com.mysql.jdbc.Driver 和 com.mysql.cj.jdbc.Driver的区别 serverTimezone设定 - 山高我为峰 - 博客园
https://www.cnblogs.com/liaojie970/p/8916568.html

该博客里面有这么一句话,“在设定时区的时候,如果设定serverTimezone=UTC,会比中国时间早8个小时,如果在中国,可以选择Asia/Shanghai或者Asia/Hongkong”。于是按照该说明将数据库配置加上serverTimezone=Shanghai。

但是启服务报错了,如图所示。

到这里,应该说是已经找到了问题的突破口于。于是先尝试修改为serverTimezone=UTC,但保存的系统时间为09点,比北京时间少了8个小时。

于是又按照下面的博文,将配置修改为serverTimezone=GMT%2B8,最后数据库的系统时间保存正确了。

JDBC driver连接MySQL运行报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than - JohnTesla - 博客园
https://www.cnblogs.com/JohnTeslaaa/p/10334679.html

至此,问题解决。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值