解决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';
这样修改之后就不会报时区错误了。