摘要:在本文中,总结了开发过程中最为常见的几种 MySQL 抛出的异常以及如何解决,包括高版本驱动的问题、时区配置问题、SSL 连接问题等,是一篇经验总结贴。
在本文中,总结了开发过程中最为常见的几种 MySQL 抛出的异常以及如何解决,包括高版本驱动的问题、时区配置问题、SSL 连接问题等,是一篇经验总结贴,于我个人而言,这一篇足以解决目前项目中所有遇到的 MySQL 问题。同时,也希望本文能对 MySQL 数据库初学者有一定的引导入门作用。
报错如下:
对于此类错误,直接看释义,一句话:JDBC 驱动抛出异常,连不上数据库。
第一种,也是最为常见的一种错误:代码配置的数据库名称或者密码与本地数据库不一致,抛出异常。

如上图所示,在配置文件中,前面的 name 属性是默认的,无需改变,对于用户名,一般为 root,可以通过数据库管理软件直接查看本地配置的情况,数据库的密码就是你自己设置的了。
修改配置文件对应的名称和密码。
第二种常见的错误:使用 IDE(以 Eclipse 为例)导入的非本地项目文件与本地的数据库版本不匹配。
举个例子:你导入你 eclipse 中的项目里面依赖的 jar 包是 8.0 的版本,而你本地安装的是 5.0 的 MySQL 数据库,自然报错。
在你导入的项目中找到 Referenced Libraries,右击鼠标→Build Path→Configure Build Path…Remove 掉项目里面依赖的 8.0 的 MySQL 驱动,Add 进你本地安装的 5.0 的版本即可。
这个错误是由于 MySQL 版本更新之后,驱动包发生改变导致的,新的驱动程序类是 com.mysql.cj.jdbc.Driver。
错误说明:不建议使用驱动类’com.mysql.jdbc.Driver’。新的驱动程序类是’com.mysql.cj.jdbc.Driver’,驱动程序是通过 SPI 自动注册的,通常是不需要手动加载驱动类。
将 MySQL 数据库 5.0 使用的驱动类com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver,驱动程序是通过 SPI 自动注册的,通常是不需要手动加载驱动类。修改之后的配置文件如下图所示:
对于 MySQL 的驱动类,我们对每个版本进行查看时,点开驱动的 jar 包可以直接查看驱动是位于哪里,例如 8.0 版本的就是 com.mysql.cj.jdbc.Driver,如下图所示:
注意:MySQL 6.0 版本之后都需要配置时区。
我们可以利用时区支持,通过配置服务器或 JDBC 驱动程序(通过 serverTimezone 配置属性)以使用更具体的时区值。
配置文件如下:
Java 数据库连接使用 UTC 时区(世界标准时间),即 serverTimezone=UTC,而北京时间比 UTC 时间早8小时,即 UTC+08:00,如果我们直接使用 serverTimezone=UTC,写入数据库中的数据会提前 8 个小时。如果按照如下配置就会在数据库中写入数据相差 8 个小时:
我们可以修改设置 serverTimezone 为北京时间 GMT%2B8、上海时间 Asia/Shanghai 或者香港时间 Hongkong。
配置文件如下即可:
另外在 MySQL 中的 my.ini 配置文件也可以修改,此文章仅用于解决相应问题,故不多做详细描述。
数据库 URL 连接地址添加useSSL = false,适用于测试。
数据库 URL 连接地址添加useSSL = true,并且提供服务器的验证证书。
通过对于 MySQL 抛出异常的几种常见解决方式的总结,加深对于 MySQL 底层的了解。只要是干开发,错误是不断地,要善于总结。同时,要充分掌握开发的底层原理,不同的版本迭代作为开发者要及时了解,不然永远跟不上技术的发展。
本文分享自华为云社区《MySQL 异常有这一篇就够了!MySQL 抛出异常的几种常见解决方式小结(时区问题、SSL 连接问题、8.0 高版本兼容问题)》,原文作者:白鹿第一帅 。
点击关注,第一时间了解华为云新鲜技术~