【MySQL】MySQL 8.0版本数据库驱动和时区配置问题

项目场景:

本地Windows10开发环境,下载安装MySQL 8.0版本数据库

下载版本为:mysql-8.0.12


问题描述

换了一家新公司,重新搭建开发环境,下载安装了最新版的MySQL 8.0.12版本,在启动旧的项目时出现报错,报错信息如下:

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.

原因分析:

一开始以为是数据库服务没打开,查看Windows服务信息,发现MySQL服务正在运行,使用Navicat测试连接也是成功的。

然后在网上搜索问题,发现问题出在MySQL版本和数据库驱动包不兼容。MySQL 8.0及以后的版本的数据库驱动名称改为了 com.mysql.cj.jdbc.Driver,而我之前的项目使用的是MySQL 5.7的版本,项目中配置的驱动信息依旧是旧版本的 com.mysql.jdbc.Driver。


解决方案:

1、修改项目中的数据库连接配置信息,将数据库驱动名称改为 com.mysql.cj.jdbc.Driver 2、修改pom文件,mysql驱动依赖中加上相应的版本号

重新启动项目,没有报MySQL版本和数据库驱动包不兼容的错误,但是又出现了另一个问题。

问题描述

新的报错信息如下:

Caused by: com.mysql.cj.exceptions.WrongArgumentException: The connection property zeroDateTimeBehavior acceptable values are: CONVERT_TO_NULL, EXCEPTION or ROUND. The value convertToNull is not acceptable.

原因分析:

网上搜索问题,发现是由于数据库和系统时区差异所造成的。

解决方案:

修改项目中的数据库连接配置信息,将 spring.datasource.url的配置修改如下, 将zeroDateTimeBehavior=convertToNull改zeroDateTimeBehavior=CONVERT_TO_NULL,并在后面加上&serverTimezone=GMT%2B8
经验分享 程序员 微信小程序 职场和发展