JDBC/Mybatis连接数据库报错:The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone.

造成这个的原因是maven导入MyBatis的时候会自动导入最新版本的8.0.11,然后8.0.11采用了新驱动,之前版本会报错。

当我们使用高版本的MySQL驱动时可以在获取数据库的连接getConnection()的url后面加上serverTimezone=GMT。

修改数据库连接url:jdbc:mysql://test?&serverTimezone=GMT。但是没有解决我的问题!

我解决的办法是:修改数据库的默认时区

1、登录mysql数据库

2、执行如下sql,没有设置之前value的值是system,因为我已经修改了,所以显示的是+08:00

show variables like '%time_zone%';

 3、使用如下sql修改默认时区:

set global time_zone = '+8:00';

4、退出重新登录,查看当前时间,和当前时间做比较,发现修改成功

select now();

问题得到解决!

还有一种解决办法是:使用低版本的MySQL jdbc驱动5.1.28,低版本的不会存在时区的问题。但是使用低版本的驱动的话会有如下异常:

java.sql.SQLException: Unknown system variable 'query_cache_size'

这个异常是因为:query cache在MySQL5.7.20就已经过时了,而在MySQL8.0之后就已经被移除了。

所以这种解决办法还是行不通!

原文地址:https://www.cnblogs.com/syq816/p/12761744.html