瑞吉shardingjdbc4.0.0-RC1-->RC2 读写分离示例错误排查

news2024/12/24 21:01:24

linux环境:CentOS7.8+mysql5.7.29

idea:jdk1.8+maven3.5

框架:springboot2.4.5 + mybatisplus3.4.2(mybatis-plus-boot-starter)+sharding-jdbc4.0.0-RC2(sharding-jdbc-spring-boot-starter兼容性问题由1改成2)+druid

B站项目视频:黑马2022年的瑞吉外卖,shardingjdbc读写分离案例

1、数据库连接性问题

错误原因: 数据库连接不上,要么数据库没开,要么访问不了10.0.0.200:3307

INFO 12396 — [ main] com.itheima.Application
ERROR 12396 — [eate-2142450580] com.alibaba.druid.pool.DruidDataSource : create connection SQLException, url: jdbc:mysql://10.0.0.200:3307/rw?characterEncoding=utf-8, errorCode 0, state 08S01

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
Caused by: java.net.ConnectException: Connection refused: connect

解决思路:1.检查url是否正确 2.mysql是否设置了防火墙 3.数据库是否支持远程访问(本地安装不算)

=============================================================================

2、兼容性问题排查

INFO 13260 — [main] com.itheima.Application : No active profile set, falling back to default profiles: default
ERROR 13260 — [main] o.s.boot.SpringApplication : Application run failed

java.lang.IllegalArgumentException: Unresolvable class definition for class [org.apache.shardingsphere.shardingjdbc.spring.boot.sharding.SpringBootShardingRuleConfigurationProperties]
Caused by: java.lang.NoClassDefFoundError: org/apache/shardingsphere/core/yaml/config/sharding/YamlShardingRuleConfiguration
at java.lang.ClassLoader.defineClass1(Native Method) ~[na:1.8.0_381]
at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[na:1.8.0_381]

Caused by: java.lang.ClassNotFoundException: org.apache.shardingsphere.core.yaml.config.sharding.YamlShardingRuleConfiguration
at java.net.URLClassLoader.findClass(URLClassLoader.java:387) ~[na:1.8.0_381]

YamlShardingRuleConfiguration有该类的话是可以打开的,但是报红了且不能打开
在这里插入图片描述

提示还是不够明显,加入以下坐标帮助查询错误信息

<dependency>
    <groupId>org.apache.shardingsphere</groupId>
    <artifactId>sharding-core-common</artifactId>
    <version>4.0.0-RC1</version>
</dependency>

清除缓存maven clean+idea Invalidate Cache:在这里插入图片描述
再次运行

Error starting ApplicationContext. To display the conditions report re-run your application with ‘debug’ enabled.
ERROR 17756 — [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘userController’: Unsatisfied dependency expressed through field ‘dataSource’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined in class path resource [org/apache/shardingsphere/shardingjdbc/spring/boot/SpringBootConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method ‘dataSource’ threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/shardingsphere/shardingjdbc/api/MasterSlaveDataSourceFactory

Caused by: java.lang.ClassNotFoundException: org.apache.shardingsphere.shardingjdbc.api.MasterSlaveDataSourceFactory
at java.net.URLClassLoader.findClass(URLClassLoader.java:387) ~[na:1.8.0_381]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_381]
在这里插入图片描述

在查看SpringBootConfiguration.class上面import导入的api都报红了

import org.apache.shardingsphere.shardingjdbc.api.EncryptDataSourceFactory;
import org.apache.shardingsphere.shardingjdbc.api.MasterSlaveDataSourceFactory;
import org.apache.shardingsphere.shardingjdbc.api.ShardingDataSourceFactory;

结论:说明springboot2.4.5应该是不兼容shardingjdbc4.0.0RC1的

解决方法尝试:shardingjdbc4.0.0RC1升级到shardingjdbc4.0.0RC2

思路:再次查看import导入的api是正常且不报红,说明springboot2.4.5兼容shardingjdbc4.0.0RC2,可以继续往下搞

不兼容就没有必要继续

清除缓存maven clean+idea Invalidate Cache:
在这里插入图片描述

再次运行

WARN 9112 — [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘userController’: Unsatisfied dependency expressed through field ‘dataSource’; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘dataSource’ defined in class path resource [com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class]: Invocation of init method failed; nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException: Failed to determine a suitable driver class

Failed to configure a DataSource: ‘url’ attribute is not specified and no embedded datasource could be configured.
Reason: Failed to determine a suitable driver class
Action:
Consider the following:
If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
If you have database settings to be loaded from a particular profile you may need to activate it (no profiles are currently active).

根据提示
查看com/alibaba/druid/spring/boot/autoconfigure/DruidDataSourceAutoConfigure.class类

这个网友给了一段注释思路:https://blog.csdn.net/evalsys/article/details/107165308
非常感谢

不然真的淦,我查的没有注释

img

也就是说根据spring.datasource.druid或者spring.datasource查找jdbc属性是找不到的,

因为我们yml文件配置结构是spring.shardingsphere.datasource

解决方式1:如果想继续用druid-spring-boot-starter,则在启动类上排除druid自动配置

@SpringBootApplication(exclude = {DruidDataSourceAutoConfigure.class})

解决方式2:如果不想更改启动类,则修改pom坐标

com.alibaba druid-spring-boot-starter 1.1.23 改为 com.alibaba druid 1.1.23

我选择更改坐标

<?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 http://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>2.4.5</version>
        <relativePath/>
    </parent>
    <groupId>com.cctv</groupId>
    <artifactId>rw_demo</artifactId>
    <version>1.0-SNAPSHOT</version>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-jdbc-spring-boot-starter</artifactId>
            <version>4.0.0-RC2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.shardingsphere</groupId>
            <artifactId>sharding-core-common</artifactId>
            <version>4.0.0-RC2</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.76</version>
        </dependency>
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.2</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.23</version>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.4.5</version>
            </plugin>
        </plugins>
    </build>
</project>

原demo+修改后demo链接:https://pan.baidu.com/s/1sy0V3oFh6umIBLAcBBx1Kg?pwd=1234
提取码:1234

慢悠悠搞了三天,很淦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1054279.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

格拉姆角场GAF将时序数据转换为图像并应用于凯斯西楚大学轴承故障诊断(Python代码,CNN模型)

1.运行效果&#xff1a; 格拉姆角场GAF将时序数据转换为图像并应用于故障诊断&#xff08;Python代码&#xff09;_哔哩哔哩_bilibili 环境库 只要tensorflow版本大于等于2.4.0即可运行 2.GAF的内容 GAF是一种用于时间序列数据可视化和特征提取的技术&#xff0c;通常用于…

小谈设计模式(9)—工厂方法模式

小谈设计模式&#xff08;9&#xff09;—工厂方法模式 专栏介绍专栏地址专栏介绍 工厂方法模式角色分类抽象产品&#xff08;Abstract Product&#xff09;具体产品&#xff08;Concrete Product&#xff09;抽象工厂&#xff08;Abstract Factory&#xff09;具体工厂&#x…

去雨去雪去雾数据集构建

在进行去雨去雪去雾算法的学习过程中&#xff0c;需要构建去雨去雪去雾数据集&#xff0c;本文参考Learning Multiple Adverse Weather Removal via Two-stage Knowledge Learning and Multi-contrastive Regularization: Toward a Unified Model论文中的数据集设定&#xff0c…

15np+pandas+matplotlib

numpy 维数 一维:shape(4,)二维:shape(4,5)三维:shape(4,5,6) 创建ndarray–np.array() # 可以是数组[1,2,3] 元组(1,2,3) 迭代对象range(n) np.array([1,2,3,4,5])列表中元素类型不同&#xff0c;会使用元素类型最大的作为ndarray类型 指定维度ndim 赋值操作 赋值&#xff…

【SpringBoot学习】收藏的学习资料,精!

文章目录 Spring实战&#xff08;第五版&#xff09;&#xff1a; https://potoyang.gitbook.io/spring-in-action-v5/di-er-bu-fen-ji-cheng-spring Spring实战&#xff08;第五版&#xff09;&#xff1a; https://potoyang.gitbook.io/spring-in-action-v5/di-er-bu-fen-ji-…

【cv】图像预处理技术——从特征检测讲述图像预处理理论、实践、应用|01

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生&#x1f338;博主主页&#xff1a; 是瑶瑶子啦每日一言&#x1f33c;: 每一个不曾起舞的日子&#xff0c;都是对生命的辜负。——尼采 文章目录 前言0、特征检测、特征提取、特征描述、特征匹配一、图像预处理概述二…

十、空闲任务及其钩子函数

1、空闲任务的介绍 (1)一个良好的程序&#xff0c;它的任务都是事件驱动的&#xff1a;平时大部分时间处于阻塞状态。 (2)有可能我们自己创建的所有任务都无法执行&#xff0c;但是调度器必须能找到一个可以运行的任务。所以&#xff0c;我们要提供空闲任务。 (3)在使用vTas…

一站式企业协同研发云——云效

一站式企业协同研发云——云效 文章目录 一站式企业协同研发云——云效什么是云效云效的作用云效使用说明公司领导操作步骤项目创建者或项目组长操作步骤项目上线部署 什么是云效 云效是一种基于云计算技术的软件研发与交付管理平台&#xff0c;旨在提高团队的协作效率和软件交…

读者写者问题—内含408真题

读者写者问题—含408 一、问题描述 一个数据问价或记录可以被多个进程共享&#xff0c;我们把只读该文件的进程称为“读者进程”&#xff0c;其他进程为“写者进程”。允许多个进程同时读一个共享对象&#xff0c;但不允许一个写者进程和其他写者进程或读者进程同时访问共享对…

ElementUI结合Vue完成主页的CUD(增删改)表单验证

目录 一、CUD ( 1 ) CU讲述 ( 2 ) 编写 1. CU 2. 删除 二、验证 前端整合代码 : 一、CUD 以下的代码基于我博客中的代码进行续写 : 使用ElementUI结合Vue导航菜单和后台数据分页查询 ( 1 ) CU讲述 在CRUD操作中&#xff0c;CU代表创建&#xff08;Create&#xff09…

通过Nginx配置域名映射到本地项目

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

Spring的注解开发-Spring配置其它注解

Spring配置其它注解 Primary 拓展&#xff1a;Primary注解用于标注相同类型的Bean优先被使用权&#xff0c;Primary是Spring3.0引入的&#xff0c;与Componen&#xff08;及其衍生的三个注解&#xff09;t和Bean一起使用&#xff0c;标注该Bean的优先级更高&#xff0c;则在通…

【知识回顾】Java常用类库-Java Runtime

文章目录 一、快速入门1.1 Runtime 介绍1.2 常用方法1.2.1 基本方法1.2.2 行为控制类1.2.3 系统信息类1.2.4 exec1.2.5 其他方法1.2.6 注意事项 二、基本使用2.1 获取当前虚拟机信息2.2 操作系统进程2.3 Process对象 三、业务场景实战3.1 执行外部脚本3.2 动态加载类 四、小结 …

《数据结构、算法与应用C++语言描述》-栈的应用-迷宫老鼠问题

迷宫老鼠 问题描述 迷宫&#xff08;如图 8-9 所示&#xff09;是一个矩形区域&#xff0c;有一个入口和一个出口。迷宫内部包含不能穿越的墙壁或障碍物。这些障碍物沿着行和列放置&#xff0c;与迷宫的边界平行。迷宫的入口在左上角&#xff0c;出口在右下角。 假定用 nxm 的…

【Java每日一题】——第十六题:将数组元素逆序并遍历输出。(2023.09.30)

&#x1f578;️Hollow&#xff0c;各位小伙伴&#xff0c;今天我们要做的是第十五题。 &#x1f3af;问题&#xff1a; 设有数组如下&#xff1a;int[] arr{11,34,47,19,5,87,63,88}; 测试结果如下&#xff1a; &#x1f3af; 答案&#xff1a; int a[]new int [10];Random …

《三国志》游戏的MySQL数据设计与管理

在任何成功的游戏背后,都有一个精心设计和管理的数据系统。这不仅决定了游戏的运行效率,还直接影响到玩家的游戏体验。 本文将深入探讨著名游戏《三国志》中的数据设计和管理。本文将讲解游戏中核心的数据元素、数据管理方法,以及开发团队在数据方面所做的工作。 文章目录 …

【C语言次列车ing】No.1站---C语言入门

文章目录 前言一、什么是C语言二、第一个C语言程序三、数据类型四、变量、常量五、字符串转义字符注释 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到我的乱七八糟小星球&#x1f31d; &#x1f4cb;专栏&#xff1a;C语言次列车i…

考研王道强化阶段(二轮复习)“算法题”备考打卡表 记录

问题&#xff1a;做408真题_2010_42题&#xff0c;即王道书 2.2.3_大题_10 思路&#xff1a; 回头补 代码&#xff1a; int moveL(SqlList &L,SqlList &S,int p) {// 健壮性表达if( L.len 0 ){return 0;}// 调用另外一个顺序表存储pos前面的元素for( int i0;i<p;…

【模型压缩】模型剪枝模块

模型剪枝模块 最基本的基于阈值策略 基于分布来选择阈值 假定权重是符合一个正太分布正态分布有68% 小于标准差 将标准差作为阈值卷积层的敏感度要比全连接层更大&#xff1a;导致有些层over-pruning 有些层 under-pruning 设置预期的稀疏率 权重值按照绝对值进行排序从最小…

字符串函数与内存函数讲解

文章目录 前言一、字符串函数1.求字符串长度strlen 2.长度不受限制的字符串函数(1)strcpy(2)strcat(3)strcmp 3.长度受限制的字符串函数(1)strncpy(2)strncat(3)strncmp 4.字符串查找(1)strstr(2)strtok 5.错误信息报告(1)strerror(2)perror 二、内存函数1.memcpy2.memmove3.me…