解决springboot druid数据库连接池连接失败后一直重连问题

目录
  • druid数据库连接池连接失败后一直重连问题
  • druid数据库连接池技术的实现与常见错误
    • 第一步,win+R cmd进入到doc窗口,敲入mysql -V
    • 第二步,写好配置文件jdbc.properties
  • 总结

druid数据库连接池连接失败后一直重连问题

当数据库暂停或者拒绝连接时,druid会一直连接

增加如下配置可以解决重连问题

spring.datasource.druid.break-after-acquire-failure=true
spring.datasource.druid.connection-error-retry-attempts=3

druid数据库连接池技术的实现与常见错误

第一步,win+R cmd进入到doc窗口,敲入mysql -V

一定要查看你mysql数据库的版本!!(以下是博主的)

mysql5.6使用的是 mysql-connector-java-5.1.26-bin.jar

更高的mysql版本需要使用 mysql-connector-java-8.0.19.jar(最新版本)数据库版本不对应会导致连接失败的。

mysql-connection-java的jar包 官网下载点击

不用登录,直接下载

如果你不想下载最新版本,点击Archives即可

下载完毕就要导入jar包 如图所示你正确导入包之后会出现小三角符号。

第二步,写好配置文件jdbc.properties

分两种:

#这个是mysql5.5版本的配置文件
username=用户名
password=密码
#url 注意这个book 表示你要连接的数据库
url=jdbc:mysql://localhost:3306/book
driverClassName=com.mysql.jdbc.Driver
initialSize=5
maxActive=5
#这个是mysql更高版本的配置文件
username=用户名
password=密码
#url 注意这个book表示你要连接的数据库
url=jdbc:mysql://localhost:3306/book?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false
driverClassName=com.mysql.cj.jdbc.Driver
initialSize=5
maxActive=5

以上如果配置文件写的不对也会报错。

最后,直接上阿里Druid数据库连接池静态代码块

public class JavaUtils {   //实现数据库连接和关闭的封装 体会Java编程的思想
    private static DruidDataSource dataSource;

    static {

        try {
            // 读取jdbc.properties属性的配置文件
            Properties properties = new Properties();
            //从流中加载数据
            InputStream inputStream = JavaUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");

            properties.load(inputStream);

            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
            System.out.println(dataSource.getConnection());

        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {

    }
  /*  关闭连接 放回数据库连接池*/
    public static void closeSources(PreparedStatement ps, Connection con) {
        try {
            if (ps != null)
                ps.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            if (con != null)
                con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

然后我又遇到的错误了 ,原因是配置文件的路径不对而报错(而且是疯狂爆红一直不停的那种)。

如果遇到报空指针异常,原因错误也很简单,我当时dataSource对象没有new出来却用它来调用方法,本人也尝试一直打断点调试找bug但没找到原因,归根结底是我没有好好理解每一行代码的含义,就一直拿着错误去百度,花了很多时间,也算是积累了经验教训了。如果出现以下就算连接成功。但当看到红字我以为又失败了哈哈

其实我之前用jdbc连接数据库是没有什么毛病的,但是我们要知道:

以上两张图片摘自尚硅谷宋红康jdbc核心技术。

总结

这些仅为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 阿里Druid数据连接池引发的线上异常解决

    目录 前言 过程一:定位工作流 过程二:定位JPA的OpenEntityManagerInViewInterceptor 过程三:定位Druid,真正的罪魁祸首 后记: 前言 事件起因:项目使用了activiti工作流,系统是由老的spring mvc项目改造成的spring boot项目,数据库链接池从dbcp切换到druid,新系统上线后,同事多次系统隔一段时间后数据查询就很慢,基本出不来. 由此开始了线上bug排查之路.这个问题从一开始就模糊定位到数据库层面的问题,因为只有和数据相关的操作

  • springboot集成druid连接池配置的方法

    在开发项目中如果数据库选型为mysql,很大概率下连接池会使用druid 这里介绍springboot集成durid springboot : 2.1.9 druid : 1.1.10 案例地址 github地址 springboot集成druid配置 需要引入的pom <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactI

  • Java中Druid连接池连接超时获取不到连接的解决

    错误内容: com.alibaba.druid.pool.GetConnectionTimeoutException: wait millis 30000, active 600, maxActive 600, creating 0 detail: Service Error:Cannot find a proper coonection from STDB 错误日志截图: 解决过程: 1.添加了三个参数 作用是如果超过3分钟,连接未释放,那么关闭连接,并报错. 2.进行请求,并查看日志 确认获

  • 解决springboot druid数据库连接池连接失败后一直重连问题

    目录 druid数据库连接池连接失败后一直重连问题 druid数据库连接池技术的实现与常见错误 第一步,win+R cmd进入到doc窗口,敲入mysql -V 第二步,写好配置文件jdbc.properties 总结 druid数据库连接池连接失败后一直重连问题 当数据库暂停或者拒绝连接时,druid会一直连接 增加如下配置可以解决重连问题 spring.datasource.druid.break-after-acquire-failure=true spring.datasource.dr

  • springboot druid数据库连接池连接失败后一直重连的解决方法

    目录 druid 重连原因 errorCount 错误次数 总结 在使用个人阿里云测试机,在查询实时输出日志时,看到数据库连接失败后,服务器一直在重连服务器.开始以为是遭受重复攻击,后面把服务重启后,就没有出现一直重连的情况.看以下输出日志: 2022-02-09 11:04:58.896 ERROR 16876 --- [eate-1550991149] com.alibaba.druid.pool.DruidDataSource   : create connection SQLExcept

  • springboot使用alibaba的druid数据库连接池错误的问题及解决

    目录 使用alibaba的druid数据库连接池错误 使用springboot整合mybatis时发生了以下错误 maven依赖 application的配置 解决 总结 使用alibaba的druid数据库连接池错误 使用springboot整合mybatis时发生了以下错误 2019-01-15 11:51:43.771 ERROR 14656 --- [eate-2056859249] com.alibaba.druid.pool.DruidDataSource   : create co

  • SpringBoot开发案例之配置Druid数据库连接池的示例

    前言 好久没有更新Spring Boot系列文章,你说忙么?也可能是,前段时间的关注点也许在其他方面了,最近项目中需要开发小程序,正好采用Spring Boot实现一个后端服务,后面会把相关的代码案例分享出来,不至于大家做小程序后端服务的时候一头雾水. 在Spring Boot下默认提供了若干种可用的连接池(dbcp,dbcp2, tomcat, hikari),当然并不支持Druid,Druid来自于阿里系的一个开源连接池,它提供了非常优秀的监控功能,下面跟大家分享一下如何与Spring Bo

  • 如何在SpringBoot 中使用 Druid 数据库连接池

    Druid是阿里开源的一款数据库连接池,除了常规的连接池功能外,它还提供了强大的监控和扩展功能.这对没有做数据库监控的小项目有很大的吸引力. 下列步骤可以让你无脑式的在SpringBoot2.x中使用Druid. 1.Maven中的pom文件 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.14</ve

  • springboot项目整合druid数据库连接池的实现

    Druid连接池是阿里巴巴开源的数据库连接池项目,后来贡献给Apache开源: Druid的作用是负责分配.管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个: Druid连接池内置强大的监控功能,其中的StatFilter功能,能采集非常完备的连接池执行信息,方便进行监控,而监控特性不影响性能. Druid连接池内置了一个监控页面,提供了非常完备的监控信息,可以快速诊断系统的瓶颈. SpringBoot 1.x版本默认使用的的tomcat的jdbc连接池,由

  • SpringBoot整合Mybatis使用Druid数据库连接池

    本文实例为大家分享了SpringBoot整合Mybatis使用Druid数据库连接池的方法,具体内容如下 在SpringBoot项目中,增加如下依赖 <!-- spring mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version

  • SpringBoot整合Druid数据库连接池的方法

    一,Druid是什么? Druid是Java语言中最好的数据库连接池.Druid能够提供强大的监控和扩展功能. 二, 在哪里下载druid maven中央仓库: http://central.maven.org/maven2/com/alibaba/druid/ 三, 怎么获取Druid的源码 Druid是一个开源项目,源码托管在github上,源代码仓库地址是 https://github.com/alibaba/druid.同时每次Druid发布正式版本和快照的时候,都会把源码打包,你可以从

  • Spring Boot集成Druid数据库连接池

    1. 前言 Druid数据库连接池由阿里巴巴开源,号称是java语言中最好的数据库连接池,是为监控而生的.Druid的官方地址是:https://github.com/alibaba/druid 通过本文,我们可以看到 Spring Boot 如何配置数据源 Spring Boot 如何集成Druid数据库连接池 如何打开并访问Druid数据库连接池的监控功能 Spring Boot 使用JdbcTemplate操作数据库 2. 配置pom.xml <parent> <groupId&g

  • Java数据库连接池连接Oracle过程详解

    第一步:导入tomcat\lib 下的一个tomcat-dbcp.jar包 第二步:在web\META-INF下新建一个context.xml文件,文件内容如下: <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/lwl" auth="Container" type="javax.sql.DataS

随机推荐