问题:连接本地数据库时,测试连接出现了报错信息

error:Server returns invalid timezone. Go to 'Advanced' tab and set 'serverTimezone'

查找百度&各大博客的前辈经验得出可行方案(治标,但可行)

解决方案:在mysql控制台运行指令

 set global time_zone='+8:00';

原因:时区错误,MySQL默认的时区是UTC时区,比北京时间晚8个小时。

分析(根据个人开发环境情况总结)

可能是因为 依赖的mysql-connector-java的jar包和本地mysql版本不对应。

本人的开发环境: 

       mysql-connector-java:5.1.47  和 mysql8.0

       mysql-connector-java:8.0.19  和 mysql5.7.17

这两个版本的匹配关系是因为本人一开始比较莽,自己用mysql8.0版本,后面改用5.7版本的。然而在使用过程中,根据别人的项目添加依赖(依葫芦画瓢 还没画好),导致出现这个版本没对应上的缘故。

mysql版本过高可以降低版本与jar包适配;mysql版本低jar包高:

a)可以在项目的lib包中添加相对应的jar包,

b)也可以在pom.xml中找到对应的依赖下写出对应的版本号,然后让maven下载jar包。

<dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.19</version>    // version对应自己的
      <scope>runtime</scope>
</dependency>

如果啊如果,继续测试时候出现连接报错,而且是时区问题,可以尝试下在mysql控制台上输入增加时区时间的操作,再去做测试连接。

增加时区的时间办法可行!但是,每次新建一个新的数据库后,想要应用的数据和数据库对接可能出现这个时区问题,就要重新执行上述操作(确实不是很繁琐,但也不是那么便利 -- 所以说 根据个人情况是: 治标

相关记录:

哦哦哦,对了。记录下题外话,不另外开个短篇记录了。

像这个时区问题时在高版本会出现这种情况,大概是在6.0之后。

也就是driver-class-name:  com.mysql.cj.jdbc.Driver(6.0+)  和com.mysql.jdbc.Driver(6.0-)

版本不对头,还会出现一个驱动过时之类的报错。对应自己的版本更改驱动类就好了。

闲谈:

这边写点督促下自己和也提醒下路过的小伙伴。在开发的时候,确定本地安装的开发环境在去引入相关对应的jar包。很多时候刚开始学会像我这样莽,没有根据自己的实际开发环境而一股脑瞎搞,很容易出现各种问题 (什么版本啊 依赖啊 或者 有些就直接没见过不懂的问题)。在跟着教学或者源码开发时候,一定要先查看自己的开发环境是怎样的并记录文本备用。再看看学习对象的开发环境是怎样的,自己的是否能对应匹配(初学者 建议搞成接近的环境,这样可以减少遇见很多问题)

 

 

更多推荐