博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决MySQL报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents ........
阅读量:7050 次
发布时间:2019-06-28

本文共 2089 字,大约阅读时间需要 6 分钟。

1.前言 

今天在用SpringBoot2.0+MyBatis+MySQL搭建项目开发环境的时候启动项目发现报了一个很奇怪的错,报错内容如下:

java.sql.SQLException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one timezone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use amore 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)at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:71)at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:76)at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:862)at com.mysql.cj.jdbc.ConnectionImpl.
(ConnectionImpl.java:444)at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:230)at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:226)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1558)at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1623)at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:2468)

 

后来查阅资料发现这都是因为安装mysql的时候时区设置的不正确 mysql默认的是美国的时区,而我们中国大陆要比他们迟8小时,采用+8:00格式

 

使用的数据库是MySQL,从上面图看出SpringBoot2.1在你没有指定MySQL驱动版本的情况下它自动依赖的驱动是8.0.12很高的版本,这是由于数据库和系统时区差异所造成的,在jdbc连接的url后面加上serverTimezone=GMT即可解决问题,如果需要使用gmt+8时区,需要写成GMT%2B8,否则会被解析为空。再一个解决办法就是使用低版本的MySQL jdbc驱动,5.1.28不会存在时区的问题。 

2.解决办法 

 1.修改MySQL的配置文件,MySQL配置文件是my.ini文件在你的安装目录下去找,我的是在C:\Program Files (x86)\MySQL\MySQL Server 5.5\my.ini

找到这个文件之后用Notepad++打开它,搜索[mysqld]节点在节点下面加上下面这句话

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

然后记得重启MySQL的服务,打开cmd窗口登录MySQL执行show variables like '%time_zone%';这句命令

 2.直接在mysql执行语句:

set global time_zone='+8:00'

 

 

注意:若是在ubuntu环境下,直接在my.cnf文件中添加该行代码即可。

转载地址:http://bjpol.baihongyu.com/

你可能感兴趣的文章
互联网威胁狩猎框架 白皮书
查看>>
iOS开发-CocoaPods的安装与使用
查看>>
Android SDK Manager连不上Google服务器的解决办法
查看>>
js常用的事件
查看>>
正则表达式
查看>>
Mysql zip的下载地址
查看>>
Linux Swap交换分区介绍总结
查看>>
cross-platform-apps-qt-vs-html5
查看>>
python 协程 深入浅出(二)
查看>>
Go语言中的panic recover defer
查看>>
hotspot虚拟机对象
查看>>
Java注解学习总结
查看>>
ESXI 主机开启mob
查看>>
Linux USB 驱动开发(一)—— USB设备基础概念
查看>>
关于乱码问题的机理分析
查看>>
[译] 可工作软件的重要性
查看>>
Git :本地仓库提交到远程服务器
查看>>
Android开发在路上:少去踩坑,多走捷径【转】
查看>>
动态代理模式
查看>>
将博客搬至CSDN
查看>>