报错:The server time zone value ‘�й���ʱ��‘ is unrecognied
Posted 1 errors(s)
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报错:The server time zone value ‘�й���ʱ��‘ is unrecognied相关的知识,希望对你有一定的参考价值。
报错:The server time zone value ‘�й���ʱ��’ is unrecognied
当我们通过JDBC连接数据库的时候有时候会报出以下的错误:
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 specific time zone value if you want to utilize time zone support.
翻译一下就是:服务器时区值’�й���ʱ��’ 无法识别或表示多个时区。如果要使用时区支持,必须配置服务器或JDBC驱动程序(通过“serverTimezone”配置属性)以使用更具体的时区值。
这是由于使用的JDBC驱动包版本高于6(包括6),当我们使用这些版本连接要使用的URL时,必须加上serverTimezone参数,来设置时区。
解决方法1
将JDBC连接的URL修改为:
jdbc:mysql://localhost:3306/数据库名?serverTimezone=UTC
这里UTC代表全球标准时间,可以根据需要更改其值。
我们使用的时间是北京时间,即东八区时间,领先UTC八个小时。
所以我们可以将URL修改为:
jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2b8
//上海时区也为东八区
jdbc:mysql://localhost:3306/数据库名?serverTimezone=Asia/Shanghai
解决方法2
当然我们可以直接通过更改使用的驱动包版本来解决该问题,只要使用6以下的版本就能解决。
连接mysql报错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:129) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) ~[mysql-connector-java-8.0.16.jar:8.0.16] at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar:na] at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar:na] at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:na] at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) [HikariCP-3.2.0.jar:na] at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) [HikariCP-3.2.0.jar:na]
原因分析:
在使用mysql的jdbc驱动最新版(6.0+)时,遇到数据库和系统时区差异引起的问题。
解决办法:
1、在数据库连接语句中加入相应信息serverTimezone=GMT,示例:
spring.datasource.url = jdbc:mysql://localhost:3306/scott?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
2、更改数据库默认时区:
3、降低mysql版本:
知道有这个方法就行了,绝大多数时候是不用的。
以上是关于报错:The server time zone value ‘�й���ʱ��‘ is unrecognied的主要内容,如果未能解决你的问题,请参考以下文章
连接mysql报错:The server time zone value ‘‘ is unrecognized or represents more than one time zone.
报错:The server time zone value ‘�й���ʱ��‘ is unrecognied
连接mysql报错 : The server time zone value 'Öйú±ê×¼Ê
报错处理:Cause: java.sql.SQLException: The server time zone value