IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> sharding jdbc 4.1.1 版本 集成 oracle 做读写分离,遇到的各种问题 -> 正文阅读

[Java知识库]sharding jdbc 4.1.1 版本 集成 oracle 做读写分离,遇到的各种问题

之所以有这篇文字是因为官网的垃圾配置说明,导致各种报错
这里参考了两篇文章
加载数据源问题
mybatis 查询返回为空

4.1.1版本yaml 文档配置地址
下面这个是官网的配置说明

dataSources:
  ds_master: !!org.apache.commons.dbcp.BasicDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ds_master
    username: root
    password: 
  ds_slave0: !!org.apache.commons.dbcp.BasicDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ds_slave0
    username: root
    password: 
  ds_slave1: !!org.apache.commons.dbcp.BasicDataSource
    driverClassName: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/ds_slave1
    username: root
    password: 

masterSlaveRule:
  name: ds_ms
  masterDataSourceName: ds_master
  slaveDataSourceNames: 
    - ds_slave0
    - ds_slave1

props:
    sql.show: true

他这个你提供的mysql 的例子,我是oracle 不知道mysql 按他这个会不会报错,没做研究,反正我oracle是有问题的,
问题一,加载数据库时卡住,
先是打印 Loading 0 logic tables’ meta data. 然后就卡主了,过了很长时间
打印出 Loading 1800 tables’ meta data.
加载了我1800个表,一个项目才几个表,加载了我全部的表, 肯定是有问题,只能断点找了,
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/65700a9160744a168ba132eee8eb61d9.png
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

到了这里,问题浮出水面了,
其中dataSourceNames就是咱们配置的数据源对应的就是spring.shardingsphere.datasource.names配置的数据源名称个数,可以看到如果dataSourceNames的数量为1,就会将自己作为默认的数据源,如果不为1,才会获取我们用spring.shardingsphere.sharding.default-data-source-name配置配置的默认数据源。如果我们配置的数据源个数不为1,且没有配置默认数据源的话,就不会走到前面说的SchemaMetaDataLoader.load方法中,而就不会去加载整个库的表元数据。
但是我配置了两个数据源,还是读取到的一条,原来读取数据源的配置是另外一个,他不是从dataSourceNames 中获取的而是在 master-slave-rules配置中获取的,需要配置两个规则名称 ,master-data-source-name 指向上面的数据源,如果是一个,他获取的就会是一个,就会走加载所有表的代码

spring:
  shardingsphere:
    datasource:
      names: master,salve
      master:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: oracle.jdbc.OracleDriver
        url: jdbc:oracle:thin:@localhost:1521:xe
        username: username
        password: password
        initial-size: 5
        max-active: 5
        min-idle: 2
        max-wait: 10000
        validationQuery: SELECT * from dual
      salve:
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: oracle.jdbc.OracleDriver
        url: jdbc:oracle:thin:@localhost:1522:xe
        username: username
        password: password
        initial-size: 5
        max-active: 5
        min-idle: 2
        max-wait: 10000
        validationQuery: SELECT * from dual
    sharding:
      master-slave-rules:
        ds0:
          master-data-source-name: master
          slave-data-source-names:
            - salve
        ds1:
          master-data-source-name: master
          slave-data-source-names:
            - salve

sharding jdbc 启动和加载配置可以了,但是又出了新的问题,使用mybatisplus 自带的查询时,报错了

Error attempting to get column 'UUID' from result set. Cause: java.sql.SQLFeatureNotSupportedException: getNString ; getNString; nested exception is java.sql.SQLFeatureNotSupportedException: getNString

人生处处都是坑,这里就不贴源码了,之所以报错,是应为,在查询的时候没有自动的将结果映射给ResultMap,如果使用的是mybatisplus
请在实体上加@TableName(value = “”, autoResultMap = true),加上这样的配置 使用mybatis
就不会报错 ,但是自己写的查询语句不能使用 * 号,要写具体的字段,不然会导致查询到的结果为null,mybatis plus 也是一样

备注说明:

配置中如果使用的druid 的数据源,如果使用了,druid-spring-boot-starter 包需要在配置中忽略自动加载,如果使用的不是starter 包,就不需要加这个配置了

 autoconfigure:
    exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-29 11:57:32  更:2022-04-29 11:59:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 1:38:07-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码