您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > 开发 > WEB开发 >
    MySQL 异常有这一篇就够了!
    时间:2021-03-03 21:07 来源:网络整理 作者:网络 浏览:收藏 挑错 推荐 打印

    MySQL 异常有这一篇就够了!

    前言

    在本文中,总结了开发进程中最为常见的几种 MySQL 抛出的异常以及如何处置,包括高版本驱动的成绩、时区配置成绩、SSL 衔接成绩等,是一篇阅历总结贴,于我团体而言,这一篇足以处置目前项目中一切遇到的 MySQL 成绩。同时,也希望本文能对 MySQL 数据库初学者有一定的引导入门作用。

    报错如下:

    Could not open JDBC Connection for transaction; nested exception is java.sql.SQLException: Connections could not be acquired from the underlying database!   

    关于此类错误,直接看释义,一句话:JDBC 驱动抛出异常,连不上数据库。

    一、代码配置的数据库称号或许密码与本地数据库不分歧 1.1、错误产生描画

    第一种,也是最为常见的一种错误: 代码配置的数据库称号或许密码与本地数据库不分歧,抛出异常。

    如上图所示,在配置文件中,前面的 name 属性是默许的,无需改动,关于用户名,普通为 root,可以经过数据库管理软件直接查看本地配置的状况,数据库的密码就是你本人设置的了。

    1.2、处置方式

    修正配置文件对应的称号和密码。

    二、导入的非本地项目文件与本地的数据库版本不婚配 2.1、错误产生描画

    第二种常见的错误:运用 IDE(以 Eclipse 为例)导入的非本地项目文件与本地的数据库版本不婚配。

    举个例子:你导入你 eclipse 中的项目外面依赖的 jar 包是 8.0 的版本,而你本地安装的是 5.0 的 MySQL 数据库,自然报错。

    2.2、处置方式

    在你导入的项目中找到 Referenced Libraries,右击鼠标→Build Path→Configure Build Path…Remove 掉项目外面依赖的 8.0 的 MySQL 驱动,Add 进你本地安装的 5.0 的版本即可。

    三、MySQL 高版本配置加载驱动类包出错成绩(以 MySQL 8.0 为例)

    这个错误是由于 MySQL 版本更新之后,驱动包发作改动招致的,新的驱动顺序类是 com.mysql.cj.jdbc.Driver。

    3.1、错误产生描画

    报错如下:

    Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class is com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary. 

    错误阐明:不建议运用驱动类’com.mysql.jdbc.Driver’。新的驱动顺序类是’com.mysql.cj.jdbc.Driver’,驱动顺序是经过 SPI 自动注册的,通常是不需求手动加载驱动类。

    3.2、处置方式

    将 MySQL 数据库 5.0 运用的驱动类com.mysql.jdbc.Driver改为com.mysql.cj.jdbc.Driver,驱动顺序是经过 SPI 自动注册的,通常是不需求手动加载驱动类。修正之后的配置文件如下图所示:

    <!-- 加载数据库驱动 --> 

    <property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property> 

    3.3、MySQL 不同版本的驱动类如何查看

    关于 MySQL 的驱动类,我们对每个版本停止查看时,点开驱动的 jar 包可以直接查看驱动是位于哪里,例如 8.0 版本的就是 com.mysql.cj.jdbc.Driver,如下图所示:

    四、数据库衔接字符串高版本配置出错(时区成绩) 留意:MySQL 6.0 版本之后都需求配置时区。 4.1、错误产生描画

    报错如下:

    2020-01-14 00:45:30,876 ERROR [DruidDataSource.java:616] : init datasource error java.sql.SQLException: 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. 

    错误阐明:效劳器时区值“????±××?±?无法辨认或代表一个以上的时区。

    4.2、处置方式

    我们可以应用时区支持,经过配置效劳器或 JDBC 驱动顺序(经过 serverTimezone 配置属性)以运用更详细的时区值。

    配置文件如下:

    <!-- 数据库衔接字符串 --> 

    (责任编辑:admin)