解决JDBC连接数据库报错java.sql.SQLException: The server time zone value is unrecognized的问题

今天在使用mybatis建立到数据库的连接时,出现了一个时区报错。java.sql.SQLException: The server time zone value ‘Öйú±ê׼ʱ¼ä’ is unrecognized…
这也是第一次遇到,感觉挺有意思的,写篇博客记录下。

报错如下:

java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' 
is unrecognized or represents more than one time zone. 
You must configure either the server or JDBC driver (via the serverTimezone configuration property)
to use a more specifc time zone value 
if you want to utilize time zone support.
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:127)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:95)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:87)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:61)

简单的理解下,它就是说我本地有不止一个时区,必须配置一个确定的时区才能使用时间支持。

查询资料得知,只需要在jdbc连接串后拼接时区代码指定当前时区为东八区即可,代码如下:

?serverTimezone=GMT%2B8

比如,初始连接串为:

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true
&characterEncoding=utf-8
&useSSL=false

添加时区后的完整串为:

jdbc:mysql://127.0.0.1:3306/test?useUnicode=true
&characterEncoding=utf-8
&useSSL=false
&serverTimezone=GMT%2B8

这么做就可以解决该报错。

PS:还有个方法就是直接修改数据库的时区配置,具体方法为执行下面的语句:

show variables like '%time_zone%'
set global time_zone='+8:00';

这样修改之后就不会报时区错误了。

 

当然我们也可以直接修改mysql的时区,打开mysql,输入set global time_zone='+8:00';

解决JDBC连接数据库报错java.sql.SQLException: The server time zone value is unrecognized的问题_第1张图片

你可能感兴趣的:(MySQL)