问题:连接本地数据库时,测试连接出现了报错信息
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包。很多时候刚开始学会像我这样莽,没有根据自己的实际开发环境而一股脑瞎搞,很容易出现各种问题 (什么版本啊 依赖啊 或者 有些就直接没见过不懂的问题)。在跟着教学或者源码开发时候,一定要先查看自己的开发环境是怎样的并记录文本备用。再看看学习对象的开发环境是怎样的,自己的是否能对应匹配(初学者 建议搞成接近的环境,这样可以减少遇见很多问题)