多数据源配置 CannotFindDataSourceException: dynamic-datasource can not find primary datasource........

2年前 (2022) 程序员胖胖胖虎阿
321 0 0

问题描述:

        今天启动一个新SpringBoot项目的时候,没有具体的内容,只是把项目建成还没有进行具体的开发,就做了简单服务端口的配置,但是在项目跑起来的时候,出现下图的问题:

多数据源配置 CannotFindDataSourceException: dynamic-datasource can not find primary datasource........
        日志出现错误显示,动态数据源找不到主数据源 这个问题一下子就搞蒙了,什么时候出现多数据源的配置问题。

具体分析:

        出现上述的问题是因为MyBatis-Plus的多数据源功能上存在错误,但是我这里是新的项目,都没有这样的需求。

        经过分析,发现原来是这个新的SpringBoot项目的pom.xml文件中依赖了其他项目模块,而且该项目模块依赖了如下:

<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
  <version>${version}</version>
</dependency>

        因为引入了这个依赖,项目就要配置主数据源和从数据源,现在找到了问题的所在。。。

解决步骤:

  1. 如果是没有多源数据库的需求的话,直接把 dynamic-datasource-spring-boot-starter 这个依赖删掉就行。
  2. 如果是有多数据源的需求的话,就在项目的 application.yml 文件中配置多数据源信息:
server:
  port: 40001

spring:
  datasource:
    druid:
      stat-view-servlet:
        enabled: true
    dynamic:
      # 配置全局druid参数,请按需配置
      druid:
        initial-size: 5
        max-active: 8
        min-idle: 3
        max-wait: 1000
        validation-query: 'select 1'
      datasource:
        master:
          username: root
          password: aaabbb
          url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
          driver-class-name: com.mysql.cj.jdbc.Driver
        slave_1:
          username: root
          password: aaabbb
          url: jdbc:mysql://localhost:3306/test2?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
          driver-class-name: com.mysql.cj.jdbc.Driver

        上面的配置信息主要是把主数据源 master 和从数据源 slave_1 的信息配置上去。

        配置完之后再启动项目,上述的问题就没有出现了。

        如果想了解使用MyBatis-Plus的多数据源使用的话,可以访问下面的链接:MyBatis-Plus多数据源(😁😁😁该链接是MyBatis-Plus的官方教程文档)

        这篇文章只是记录我出现的问题,仅个人理解。。😝😝

相关文章

暂无评论

暂无评论...