返回顶部
首页 > 资讯 > 数据库 >分析MySQL抛出异常的几种常见解决方式
  • 900
分享到

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

mysql异常 2022-05-19 05:05:52 900人浏览 安东尼
摘要

目录前言一、代码配置的数据库名称或者密码与本地数据库不一致1.1、错误产生描述1.2、解决方式二、导入的非本地项目文件与本地的数据库版本不匹配2.1、错误产生描述2.2、解决方式三、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异常的解决方式的资料请关注自学编程网其它相关文章!

    您可能感兴趣的文档:

    --结束END--

    本文标题: 分析MySQL抛出异常的几种常见解决方式

    本文链接: https://lsjlt.com/news/10356.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 分析MySQL抛出异常的几种常见解决方式
      目录前言一、代码配置的数据库名称或者密码与本地数据库不一致1.1、错误产生描述1.2、解决方式二、导入的非本地项目文件与本地的数据库版本不匹配2.1、错误产生描述2.2、解决方式三、MySQL 高版本配置加载驱动类包...
      99+
      2022-05-19
      mysql 异常
    • java抛出异常的几种情况小结
      目录1. 编译错误2.可以执行3. 抛出异常,不执行常见运行时异常:常见非运行时异常:Java中异常问题(异常抛出后是否继续执行的问题)1. 编译错误 //代码1 public ...
      99+
      2024-04-02
    • Java 常见的几种内存溢出异常的原因及解决
      目录堆内存溢出原因:解决方案:栈内存溢出原因:解决方案:方法区和运行时常量池内存溢出原因:本机直接内存溢出原因:解决方案:元空间内存溢出原因:解决方案:内存溢出的异常有很多,并且每种...
      99+
      2024-04-02
    • Python异步中loop抛出异常的解决方法
      这篇文章主要介绍Python异步中loop抛出异常的解决方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!python的五大特点是什么python的五大特点:1.简单易学,开发程序时,专注的是解决问题,而不是搞明白语...
      99+
      2023-06-14
    • java抛出异常的方式有哪些
      在Java中,可以通过以下方式抛出异常:1. 使用throw语句手动抛出异常。可以使用throw关键字将一个异常对象抛出,例如:``...
      99+
      2023-09-15
      java
    • Spring应用抛出NoUniqueBeanDefinitionException异常的解决方案
      目录前言 解决方案 前言 我们在开发Spring应用时可能会不小心注入两个相同类型的Bean,比如实现了两个相同Service接口的类,示例伪代码如下: interface&n...
      99+
      2024-04-02
    • 分享MySQL常用 内核 Debug 几种常见方法
      目录一、准备Debug环境二、使用GDB调试启动GDB编译器GDB常用命令Debug示例1、取变量值2、调试脚本三、使用Trace文件调试设置debug参数Debug示例阅读本文你将...
      99+
      2024-04-02
    • C++中的异常抛出和捕获方式
      目录C++ 中的异常语法抛出类型声明栈自旋在 C 语言中,如果发生错误,上级函数要进行出错处理,层层上传,容易造成过多的出错处理代码,并且传递的效率比较低下。 C++ 中的异常 C+...
      99+
      2024-04-02
    • java中实现分页的常见几种方式
      文章目录 1. 前言2. 先说结论3. 例子1. 数据库SQL的限制条件(limit、fetch)2. 使用List集合的截取功能实现3. 插件PageHelper 1. 前言 无论是...
      99+
      2023-08-31
      mybatis java 分页 数据库 PageHelper
    • 如何进行C++抛出异常技巧的分析
      这期内容当中小编将会给大家带来有关如何进行C++抛出异常技巧的分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。C++语言与其他编程语言一样,其中也包含有关于异常的处理。我们在这里将会为大家详细讲解一下有...
      99+
      2023-06-17
    • python代码的几种常见加密方式分享
      目录1.发行.pyc文件1.1 编译加密1.2 是否可逆1.3是否影响模块调用2.代码混淆3.生成exe可执行文件4…py文件转化为.so文件5.附加运行辅助包文件方式...
      99+
      2024-04-02
    • appium中常见的几种点击方式
      目录1、最常见的点击方式click()方法 2、手指轻敲屏幕操作tap()方法3、手指按下操作press()方法4、模拟手指长按操作long_press()方法首先从app...
      99+
      2024-04-02
    • JavaScript中常见的几种继承方式
      目录原型继承内存图分析盗用构造函数继承分析组合继承原型链继承寄生式继承寄生组合式继承原型继承 function Parent(name) { this.name = name }...
      99+
      2024-04-02
    • Python常见异常的处理方式浅析
      目录一、引言二、使用异常对数据进行初始化三、使用异常实现重处理四、使用异常应对多种潜在情况五、获取异常详细信息六、人工触发异常七、异常嵌套小结一、引言 有一定 Python 编程经验...
      99+
      2023-02-21
      Python异常处理机制 Python异常处理语句
    • 空指针异常出现的几种原因及解决方法
      目录 空指针异常: 空指针容易出现的场景 避免方案 空指针异常: 什么是空,什么是指针? 空就是:小明过生日,小华送给了小明一个“礼物”,这个“礼物”只有一个外面的包装但是里面什么都没有,这个礼物就是"",而空则是小华压根没有给小...
      99+
      2023-09-01
      java
    • java.lang.NullPointerException异常的几种原因及解决方案
      目录java程序中NullPointerException异常的一些例子。1. 调用实例方法时出现NullPointerException2. 访问/修改null对象的字段时出现Nu...
      99+
      2023-05-18
      java.lang.NullPointerException异常 java.lang.NullPointerException
    • Java语法中Lambda表达式无法抛出异常的解决
      目录Lambda表达式无法抛出异常1.Demo 例子2.编译通过lambda表达式异常应该如何处理我们看一个例子Lambda表达式无法抛出异常 1.Demo 例子 错误提示 - Un...
      99+
      2024-04-02
    • 解决lambda表达式内出现异常无法throw抛出的问题
      目录lambda表达式内出现异常无法throw抛出问题描述问题原因解决方案lambda表达式中无法抛出受检异常lambda表达式内出现异常无法throw抛出 问题描述 今儿在使用la...
      99+
      2024-04-02
    • Python常见的几种数据加密方式
      目录一、md5加密解密增加破解成本的方法SHA1安全哈希算法二、Base64伪加密三、DES/AESAES和DES的区别破解方法四、RSA非对称加密算法使用流程和场景介绍公钥私钥生成...
      99+
      2024-04-02
    • 电脑常见的几种故障及解决方法
      电脑常见的几种故障及解决方法包括:1. 电脑无法启动:检查电源是否插好、电源线是否损坏、重启电脑、检查硬件连接是否正常。2. 蓝屏死...
      99+
      2023-09-07
      电脑
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作