jiansgk 2024-09-27 18:13 采纳率: 50%
浏览 4

springboot整合sharding-jdbc无法识别数据源

springboot 使用sharding-jdbc实现主从分离,无法识别到数据源,尝试过很多方式依然无法解决:例如注释掉druid-springboot的坐标,替换为druid
配置文件如下

server:
  port: 8080

spring:
  #读写分离配置
  shardingsphere:
    datasource:
      names:
        master,slave
      # 主数据源
      master:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.xxx.100:3306/reggir?characterEncoding=utf-8
        username: root
        password: root123
      # 从数据源
      slave:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.cj.jdbc.Driver
        url: jdbc:mysql://192.168.xxx.200:3306/reggir?characterEncoding=utf-8
        username: root
        password: root123
    masterslave:
      # 读写分离配置
      load-balance-algorithm-type: round_robin #从库负载均衡策略;round_robin:轮询
      # 最终的数据源名称
      name: dataSource #bean的名称
      # 主库数据源名称
      master-data-source-name: master
      # 从库数据源名称列表,多个逗号分隔
      slave-data-source-names: slave
    props:
      sql:
        show: true #开启SQL显示,默认false
  main:
    allow-bean-definition-overriding: true #bean的定义覆盖配置

  data:
    redis:
      host: localhost
      port: 6379
  cache:
    redis:
      time-to-live: 1800000

mybatis-plus:
  configuration:
    #开启驼峰映射
    map-underscore-to-camel-case: true
    #开启日志
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

pom文件如下


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <groupId>com.itheima</groupId>
    <artifactId>reggie_take_out</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>
    <name>reggir_takeout</name>
    <description>reggir_takeout</description>


    <properties>
        <java.version>17</java.version>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<!--   json数据转换     -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>2.0.51</version>
        </dependency>


        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>


        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.7</version>
        </dependency>

        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>

        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-cache</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.1.1</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

报错信息如下:

img

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-27 18:15
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    从你提供的配置和错误信息来看,这个问题可能源于以下几个原因:

    1. 在配置文件中,数据源的配置可能没有被正确识别。你应该检查你的配置文件格式是否正确,特别是在YAML格式中,键和值之间是否正确地使用了冒号分隔。此外,还需要检查你的配置文件是否正确地被加载到了应用程序中。你可以尝试使用spring.config.location来指定配置文件的绝对路径进行测试。
    2. 在你的配置文件中,数据源的配置部分使用了masterslave作为数据源名称,但在错误提示中并没有看到这两个名称被识别。这可能是因为在配置文件中定义的名称与实际使用的名称不匹配。你需要检查你的代码和配置文件中数据源名称的一致性。此外,也需要检查你是否正确地使用了数据源名称,例如在创建数据源Bean时是否使用了正确的名称。
    3. 关于驱动类名的问题,错误信息提示无法确定合适的驱动类。你需要确认你的MySQL驱动是否已经被正确地包含在项目的依赖中。从你的pom.xml文件来看,你正在使用mysql-connector-j作为MySQL的驱动,这应该没有问题。然而,你还需要确认你的MySQL版本是否与这个驱动兼容。
    4. 在你的Spring Boot项目中可能存在多个数据源配置冲突的问题。在你的配置文件中,你使用了spring.main.allow-bean-definition-overriding=true来允许覆盖Bean的定义。然而,对于数据源这种关键组件来说,这可能会导致一些难以预料的问题。你可能需要删除这个配置或者确保你在配置数据源时不会发生冲突。

    建议的解决方案如下:

    • 确保你的配置文件格式正确,键和值之间用冒号分隔,并尝试使用绝对路径指定配置文件进行测试。
    • 检查你的代码和配置文件中数据源名称的一致性,并确保在创建数据源Bean时使用了正确的名称。
    • 确认你的MySQL驱动与MySQL版本兼容,并检查是否已经正确地包含在项目的依赖中。
    • 删除或修改spring.main.allow-bean-definition-overriding的配置,避免可能的冲突问题。

    希望这些信息能帮助你解决问题。如果问题仍然存在,你可以提供更多的信息以便我能更准确地帮助你解决问题。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月27日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?