当前位置: 首页 > news >正文

Spring Boot整合Druid与Dynamic-Datasource多数据源配置:从错误到完美解决

本文记录在Spring Boot 2.X项目中整合Druid连接池和Dynamic-Datasource多数据源时遇到的典型错误DataSource returned null from getConnection()的完整解决过程,包含详细的错误分析和解决方案。

问题背景

在Spring Boot 2.7项目中,我需要整合:

  • Druid:阿里开源的数据库连接池,提供强大的监控功能
  • Dynamic-Datasource:基于MyBatis-Plus的多数据源组件

配置完成后启动项目,出现以下关键错误日志:

SqlSession [...] was not registered for synchronization because synchronization is not active
13:46:49.312 WARN  c.alibaba.druid.pool.DruidDataSource [1144] 
- getConnection but jdbcUrl is not set,jdbcUrl=null,username=nullCaused by: org.springframework.jdbc.CannotGetJdbcConnectionException: 
Failed to obtain JDBC Connection: DataSource returned null from getConnection(): {CreateTime:"2025-06-03 13:46:41",ActiveCount:0,PoolingCount:0,CreateCount:0,DestroyCount:0,CloseCount:0,ConnectCount:0,Connections:[]
}

错误原因深度分析

1. 数据源初始化失败

  • 连接池状态显示所有计数为0,表明数据源未正确初始化
  • Druid报出jdbcUrl is not set,说明关键连接参数未注入

2. 配置冲突(核心原因)

  • Druid自动配置Dynamic-Datasource自动配置 冲突
  • 手动创建的DataSource Bean覆盖了动态数据源配置

3. 连接池冲突

  • Spring Boot默认使用HikariCP连接池
  • 未排除HikariCP导致连接池实现冲突

4. 多数据源配置问题

  • @DS注解指定的数据源名称与配置不一致
  • YAML配置格式错误,数据源参数未正确绑定

完整解决方案

步骤1:修正依赖配置(pom.xml)

<dependencies><!-- 排除默认连接池 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><exclusions><exclusion><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId></exclusion></exclusions></dependency><!-- Druid连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter
http://www.xdnf.cn/news/787105.html

相关文章:

  • 力扣HOT100之多维动态规划:1143. 最长公共子序列
  • ArrayList 类
  • Generate Permutation
  • 编译器对齐机制与硬件浮点计算详解
  • 春雪食品×MTC AI助手:创新驱动再升级,效率革命正当时!
  • PV操作的C++代码示例讲解
  • .Net Framework 4/C# 初识 C#
  • LeetCode 300 最长递增子序列
  • 电工基础【5】简单的电路设计接线实操
  • SpringCloud——Nacos注册中心、OpenFeign
  • 前端验证下跨域问题(npm验证)
  • DeepSeek 赋能 NFT:数字艺术创作与交易的革新密码
  • 数据库完整性
  • 18.04 update 报错:(appstreamcli:2822): GLib-ERROR
  • 《Effective Python》第六章 推导式和生成器——使用类替代生成器的 `throw` 方法管理迭代状态转换
  • 提升系统稳定性和可靠性的特殊线程(看门狗线程)
  • Electron桌面应用下,在拍照、展示pdf等模块时,容易导致应用白屏
  • DiskGenius专业版v6.0.1.1645:分区管理、数据恢复、备份还原,一应俱全!
  • PHP+mysql 美容美发预约小程序源码 支持DIY装修+完整图文搭建教程
  • Vue3中使用Echarts图表步骤-demo
  • 安科瑞APD300:多模态融合的智能局放监测新标杆
  • PowerShell脚本编程基础指南
  • 01-python爬虫-第一个爬虫程序
  • Docker容器使用手册
  • AXURE安装+汉化-Windows
  • Ubuntu中TFTP服务器安装使用
  • 5.Transformer模型详解
  • SKUA-GOCAD入门教程-第八节 线的创建与编辑2
  • 后端解决跨域问题的三种方案:注解配置 vs 全局配置 vs 过滤器配置(附完整代码详解)
  • Spring 官方推荐构造函数注入