1 问题描述

开发环境为 SpringBoot2 + Mysql5.6 + mysql-connector-java8。项目启动时,抛出以下错误:

Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: 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 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_91]at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_91]at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_91]at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_91]at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:85) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.util.TimeUtil.getCanonicalTimezone(TimeUtil.java:132) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.protocol.a.NativeProtocol.configureTimezone(NativeProtocol.java:2139) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.protocol.a.NativeProtocol.initServerSession(NativeProtocol.java:2163) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:1301) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:958) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:817) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:447) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:237) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199) ~[mysql-connector-java-8.0.17.jar:8.0.17]at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:136) ~[HikariCP-3.2.0.jar:?]at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:369) ~[HikariCP-3.2.0.jar:?]at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:198) ~[HikariCP-3.2.0.jar:?]at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:467) ~[HikariCP-3.2.0.jar:?]at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:541) ~[HikariCP-3.2.0.jar:?]at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115) ~[HikariCP-3.2.0.jar:?]at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:112) ~[HikariCP-3.2.0.jar:?]at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:157) ~[spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:115) ~[spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:78) ~[spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]at org.springframework.jdbc.support.JdbcUtils.extractDatabaseMetaData(JdbcUtils.java:319) ~[spring-jdbc-5.1.9.RELEASE.jar:5.1.9.RELEASE]... 67 more

2 原因

原因是未指定时区。

在 Mysql 数据库执行以下 SQL:

SELECT @@global.system_time_zone,@@global.time_zone;

运行结果:

global.time_zone 是每次连接会话的时区,默认值为 system。如果是 system,那么它就会使用 global.system_time_zone 的值,而该值是乱码,所以抛错。

3 解决

有两种解决方法,下面分别予以说明。

3.1 为 mysql-connector-java 驱动指定时区

在 mysql-connector-java 的 url 配置中,可以通过 serverTimezone 属性来指定时区。形如:

jdbc:mysql://localhost/xxx?serverTimezone=Asia/Shanghai

3.2 为 mysql 数据库配置时区

在 mysql 安装目录下的 my.ini 的 [mysqld] 配置时区:

default-time-zone='+8:00'

整个地球分为二十四时区,每个时区都有自己的本地时间。北京时区是东八区,即比通用协调时(UTC, Universal Time Coordinated) 快 8 小时,所以这里设置为 +8:00。

设置后,重启 mysql 数据库。这时,再次查询 mysql 数据库的时区,就可以看到我们刚才所设置的值啦:


建议优先配置好 mysql 数据库的全局时区。如果因为其它原因,无法配置 mysql ,再使用第一种方案,即 为 mysql-connector-java 驱动指定时区。

The server time zone value 'xxx' is unrecognized or represents more than one time zone 问题的解决方法相关推荐

  1. Mysql时区差异异常-The server time zone value ‘xxx‘ is unrecognized or represents more than one time zone.

    错误:Mysql时区差异异常 原因:mysql的驱动依赖包版本在6.x.x或更高,以致和系统时区差异 解决: 1.把mysql的驱动依赖包版本换为5.x.x或更低 --或者-- 2.在url后面添加s ...

  2. The server time zone value 'EDT' is unrecognized or represents more than one time zone.

    The server time zone value 'EDT' is unrecognized or represents more than one time zone. 由于数据库和系统时区差异 ...

  3. The server time zone value ‘й‘ is unrecognized or represents more than one time zone

    前言:最近,因为复习JDBC知识,使用了最新版本的mysql驱动程序(mysql-connector-java.jar),结果出现了之前从未遇到过的问题:The server time zone va ...

  4. The server time zone value ‘乱码‘ is unrecognized or represents more than one time zone.

    Connection连接mysql数据库,报错内容: The server time zone value '乱码' is unrecognized or represents more than o ...

  5. SQLException: The server time zone value ‘EDT‘ is unrecognized or represents more than one time zone

    异常:java.sql.SQLException: The server time zone value 'EDT' is unrecognized or represents more than o ...

  6. HIVE启动的时候, The server time zone value ‘EDT‘ is unrecognized or represents more than one time zone.

    启动hive的时候报错 2022-09-28 09:20:17,846 INFO [main] metastore.HiveMetaStore (HiveMetaStore.java:newRawSt ...

  7. The server time zone value '?й???????' is unrecognized or represents more than one time zone

    问题: The server time zone value '?й???????' is unrecognized or represents more than one time zone 错误原 ...

  8. The server time zone value '?й???????' is unrecognized or represents more than one time zone. You mu

    原创博主的地址:http://blog.csdn.net/oppo5630/article/details/52162783 解决数据库连接 报错: The server time zone valu ...

  9. The server time zone value ‘?й???’ is unrecognized or represents more than one time zone

    问题:java.sql.SQLException: The server time zone value '?й???' is unrecognized or represents more than ...

最新文章

  1. C语言网络编程:close或者shutdown断开通信连接
  2. JDK和cglib生成代理类
  3. 【Object类、日期、StringBuilder】
  4. 像像接入云信,连接真人连接真爱
  5. C语言学习笔记--函数与指针
  6. 官网MySQL下载速度慢的解决方法(5分钟内搞定)
  7. 浙大计算机学院绩点,浙江大学学分制管理暂行规定-浙江大学本科生院.doc
  8. C++0x 通用属性
  9. python坐标轴拉伸_python-Matplotlib垂直拉伸histogram2d
  10. STM32固件库编成基础教程
  11. struct dirent
  12. java中类图概念_UML类图详细介绍
  13. Windows消息ID大全
  14. SQL SERVER对象名无效/执行成功但有错误(初学者易犯错误)
  15. 教你制作启动U盘,用U盘装系统(转载)
  16. apex英雄哪个服务器稳定,apex英雄哪个服务器好
  17. no matching distribution found for XXX 或 read timed out解决办法
  18. Digital Creative
  19. 【Scrapy pipeline 存入数据到mysql 】mysql的实践笔记,以及模板代码
  20. 让应用程序禁止Windows屏幕保护

热门文章

  1. XUN·LEI 会员哒
  2. 『ACM』ACM部分训练日记(以此纪念和队友与FLS一起度过的快乐时光)
  3. 谷歌开源 ClusterFuzz,自动化查找并修复 bug
  4. ECB oracle——attack
  5. 浅析GPU计算——CPU和GPU的选择
  6. 开源许可违反:案例说明(Apache License 2.0)
  7. JSP中把动态页面转换为静态页面
  8. element-ui表格行不对齐
  9. ios 自定义拍照页面_iOS开发笔记:自定义相机拍照
  10. BAT、华为、头条等各大互联网公司职级、薪资、股权大揭秘