博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring boot连接mysql时,The server time zone value 'EDT' is unrecognized 异常
阅读量:3787 次
发布时间:2019-05-22

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

问题解决方案

Spring boot 连接mysql数据库时,在部分环境中会出现The server time zone value 'EDT' is unrecognized异常。

com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'EDT' 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.

查找资料发现这个由于应用所在时区与数据库所在时区不一致导致。原数据库连接设置如下。

jdbc:mysql://ip:port/database_name?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true

为了解决这个问题,按照网上资料,在url中添加serverTimezone=GMT

jdbc:mysql://ip:port/database_name?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&serverTimezone=GMT

问题解决,应用启动正常。

但是,为了节约资源,进行测试,应用和数据库部署在同一台机器上,所以,不存在数据库和应用所在服务器时区不统一的问题。因此,进一步探索原因。

问题分析

在服务器中,我是用date命令查看时区如下

Tue Apr 14 23:01:35 EDT 2020

其时区为EDT,但是数据库中可用的时区列表为(通过执行  ll /usr/share/zoneinfo 查看)

数据库可使用的时区不存在EDT,这也就是异常提示信息中的“The server time zone value 'EDT' is unrecognized ”时区EDT不能识别的原因。而上述解决方案中,在连接中添加serverTimezone=GMT之所以能够解决问题,是因为GMT这个时区存在于数据库可用时区列表中,应用在向数据库中添加时间数据时,数据库可以识别时区信息。由此可见,serverTimezone指定其他存在于列表中的时区也是可以,比如,将serverTimezone设置为UCT、UTC之类的。

数据库存储时间之所以会存在时区问题可参照廖雪峰老师网站的博客

 

 

参考资料: 

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

你可能感兴趣的文章
ubuntu基础常用命令(1)
查看>>
Ubuntu基础常用命令(03)——关机重启、vi 完~
查看>>
输入\数据转换类型\运算符\判断语句
查看>>
多任务(进程线程)
查看>>
超易懂的MySQL缓存机制
查看>>
mysql-Explain
查看>>
mysql-事务
查看>>
C语言排序算法
查看>>
python常用模块整理(超详细)
查看>>
用nginx做反向代理
查看>>
史上最易部署lvs集群-tun模式
查看>>
python进程,线程,协程
查看>>
python网络编程
查看>>
你值得拥有的linux下的网络io 同步/异步/阻塞/非阻塞/BIO/NIO/AIO
查看>>
nginx日志文件配置
查看>>
HTTP over SSL/TLS
查看>>
CentOS安装fortune+cowsay
查看>>
用vue创建一个项目
查看>>
$listeners与.native的使用
查看>>
熟悉Linux 下静态库.a 与.so 库文件的生成与使用——实例
查看>>