springboot jpa多数据源报错:HikariPool-2-Connection is not available,request timedout,SQLError0 state:08003

业务需从其他数据库同步数据,采用spring boot2.0框架、jpa和mysql。首次进行多数据源开发,定时任务同步数据时频繁报错。对连接池、配置文件、wait time_out配置等可能原因逐一排查,最终将wait time_out改为300后,好几天未再报错,后续将持续更新进展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错信息
**业务需求:**需要从其他数据库中同步业务数据,以支持当前系统的数据需要
**技术栈:**spring boot2.0框架 jpa mysql
**问题描述:**第一次尝试多数据源的开发,在做定时任务同步数据时发现经常报错,错误信息在上面图片中,有的人说是连接池不够用了,有的说是配置问题,有的说是MySQL中有个wait time_out的配置8小时时间太短了
于是我就一个一个去尝试
1、连接池的问题,同步时需要处理一万多数据,我在service层加了事务控制,@Transactional,他 们说可能是这个问题导致的,我将注解去掉,在运行发现还是不行
2、有人说是我的配置文件写的不对,我按照他们的说法,将配置文件修改,发现问题还是存在
原来的配置:

spring:
  datasource:
  #本地数据库
      primary:
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://###/###?characterEncoding=utf8&useSSL=false
        username: ###
        password: ###

    #datasource:
    #外部数据库
      secondary:
        driver-class-name: com.mysql.jdbc.Driver
        jdbc-url: jdbc:mysql://###/###?characterEncoding=utf8&useSSL=false
        username: ###
        password: ###

  jpa:
      show-sql: true
      hibernate:
        ddl-auto: update
          #strategy: org.hibernate.cfg.DefaultNamingStrategy
        naming:
          implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy
	  properties:
        hibernate:
          dialect: org.hibernate.dialect.MySQL5Dialect	  

修改后的配置

  jpa:
      primary-dialect: org.hibernate.dialect.MySQL5Dialect
      secondary-dialect: org.hibernate.dialect.MySQL5Dialect
      show-sql: true
      hibernate:
        ddl-auto: update
          #strategy: org.hibernate.cfg.DefaultNamingStrategy
        naming:
          implicit-strategy: org.springframework.boot.orm.jpa.hibernate.SpringImplicitNamingStrategy

其他未变
运行后发现依然没解决问题

3、对于time_out的方案,我们一开始并没有按照网上说的改为最大值,而是改为一分钟,验证一下是不是长时间不连接导致的断开,修改一分半钟后发现问题没有显现(说明一下,报错不是每时每刻发生,是系统重启后一段时间没事,过上一段时间开始报错,并且不会变好),说明不是wait time_out的问题,

有意思的是我改短以后就没在报过错,于是我又改回28800,过上一段时间后就报错了,于是现在将其改为了300,好几天了,没在报错

至今还未找到错误原因,找到问题以及解决方案会持续更新

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值