我的编程空间,编程开发者的网络收藏夹
学习永远不晚

分析MySQL抛出异常的几种常见解决方式

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

分析MySQL抛出异常的几种常见解决方式

目录
  • 前言
  • 一、代码配置的数据库名称或者密码与本地数据库不一致
    • 1.1、错误产生描述
    • 1.2、解决方式
  • 二、导入的非本地项目文件与本地的数据库版本不匹配
    • 2.1、错误产生描述
    • 2.2、解决方式
  • 三、MySQL 高版本配置加载驱动类包出错问题(以 MySQL 8.0 为例)
    • 3.1、错误产生描述
    • 3.2、解决方式
    • 3.3、MySQL 不同版本的驱动类如何查看
  • 四、数据库连接字符串高版本配置出错(时区问题)
    • 4.1、错误产生描述
    • 4.2、解决方式
  • 五、为什么数据库中写入数据相差 8 个小时?
    • 5.1、错误产生描述
    • 5.2、解决方式
  • 六、SSL 连接问题
    • 6.1、错误产生描述
  • 总结

    前言

    报错如下:

    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 配置属性)以使用更具体的时区值。

    配置文件如下:

    
    <!-- 数据库连接字符串 -->
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></property>

    五、为什么数据库中写入数据相差 8 个小时?

    5.1、错误产生描述

    Java 数据库连接使用 UTC 时区(世界标准时间),即 serverTimezone=UTC,而北京时间比 UTC 时间早8小时,即 UTC+08:00,如果我们直接使用 serverTimezone=UTC,写入数据库中的数据会提前 8 个小时。如果按照如下配置就会在数据库中写入数据相差 8 个小时:

    
    <!-- 数据库连接字符串 -->
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?serverTimezone=UTC&amp;characterEncoding=utf-8"></property>

    5.2、解决方式

    我们可以修改设置 serverTimezone 为北京时间 GMT%2B8、上海时间 Asia/Shanghai 或者香港时间 Hongkong。

    配置文件如下即可:

    
    <!-- 数据库连接字符串 -->
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></property>

    另外在 MySQL 中的 my.ini 配置文件也可以修改,此文章仅用于解决相应问题,故不多做详细描述。

    六、SSL 连接问题

    6.1、错误产生描述

    报错如下:

    Sun Oct 14 00:45:30 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

    错误说明:不建议在没有服务器身份验证的情况下建立 SSL 连接。根据 MySQL 5.5.45+,5.6.26+ 和 5.7.6+ 的 SSL 连接要求,如果未设置连接方式,则默认情况下必须建立 SSL 连接。对于不使用 SSL 的现有应用程序,服务器的验证证书属性设置为“false”。您需要通过设置useSSL = false来显式禁用 SSL,或者设置useSSL = true并提供服务器的验证证书。

    2、解决方式

    • 数据库 URL 连接地址添加useSSL = false,适用于测试。
    • 数据库 URL 连接地址添加useSSL = true,并且提供服务器的验证证书。

    配置文件如下即可:

    
     <!-- 数据库连接字符串 -->
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/demo?useSSL=false&amp;serverTimezone=GMT%2B8&amp;characterEncoding=utf-8"></property>

    总结

    通过对于 MySQL 抛出异常的几种常见解决方式的总结,加深对于 MySQL 底层的了解。只要是干开发,错误是不断地,要善于总结。同时,要充分掌握开发的底层原理,不同的版本迭代作为开发者要及时了解,不然永远跟不上技术的发展。

    以上就是分析MySQL抛出异常的几种常见解决方式的详细内容,更多关于MySQL异常的解决方式的资料请关注自学编程网其它相关文章!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    分析MySQL抛出异常的几种常见解决方式

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    分析MySQL抛出异常的几种常见解决方式

    目录前言一、代码配置的数据库名称或者密码与本地数据库不一致1.1、错误产生描述1.2、解决方式二、导入的非本地项目文件与本地的数据库版本不匹配2.1、错误产生描述2.2、解决方式三、MySQL 高版本配置加载驱动类包出错问题(以 MySQL
    2022-05-19

    Python异步中loop抛出异常的解决方法

    这篇文章主要介绍Python异步中loop抛出异常的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语
    2023-06-14

    java.lang.NullPointerException异常的几种原因及解决方案

    本文主要介绍了java.lang.NullPointerException异常的几种原因及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-18

    电脑常见的几种故障及解决方法

    电脑常见的几种故障及解决方法包括:1. 电脑无法启动:检查电源是否插好、电源线是否损坏、重启电脑、检查硬件连接是否正常。2. 蓝屏死机:重启电脑、检查硬件是否过热、升级驱动程序、修复操作系统。3. 病毒感染:安装杀毒软件并进行全面扫描、更新
    2023-09-07

    MySQL 中常见的几种高可用架构部署方案解析

    MySQLReplication是官方提供的主从同步方案,用于将一个MySQL的实例同步到另一个实例中,这篇文章主要介绍了MySQL 中常见的几种高可用架构部署方案,需要的朋友可以参考下
    2023-05-17

    MySQL出现Waitingfortablemetadatalock异常的解决方法

    当MySQL使用时出行Waitingfortablemetadatalock异常时该怎么办呢?这篇文章就来和大家讲讲解决办法,感兴趣的小伙伴可以了解一下
    2023-05-15

    Java中空指针异常的几种解决方案

    这篇文章主要介绍了Java中空指针异常的几种解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-06

    MySQL 中常见的几种高可用架构部署方案解析

    目录mysql 中的集群部署方案前言MySQL ReplicationMySQL Group ReplicationInnoDB ClusterInnoDB ClusterSetInnoDB ReplicaSetMMMMHAGalera C
    2023-04-21

    Springboot异常日志输出方式的示例分析

    小编给大家分享一下Springboot异常日志输出方式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!lombok插件使用引入依赖,在项目中使用Lombok可以减少很多重复代码的书写。比如说getter/sette
    2023-06-22

    解决网吧交换机几种常见故障的方法

      一般来说,交换机的每个端口都用来连接一个独立的网段,但是有时为了提供更快的接入速度,我们可以把一些重要的网络计算机直接连接到交换机的端口上。这样,网络的关键服务器和重要用户就拥有更快的接入速度,支持更大的信息流量。今天小编给大家带来的教程是:解决网吧交换机几种常见故障的方法。  这一篇教程里面,小编就会和大家简单的
    解决网吧交换机几种常见故障的方法
    2024-04-18

    Android Force Close 出现的异常原因分析及解决方法

    一、原因:forceclose,意为强行关闭,当前应用程序发生了冲突。NullPointExection(空指针),IndexOutOfBoundsException(下标越界),就连Android API使用的顺序错误也可能导致(比如se
    2022-06-06

    一文详解Python中实现单例模式的几种常见方式

    这篇文章主要为大家介绍了Python中实现单例模式的几种常见方式示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-22

    编程热搜

    目录