一、场景
1、项目使用ShardingSphere操作数据库
2、配置的数据源为manager1、manager2
3、有配置分库策略
4、查询表"t_mb_black"的数据时,有时查询的是manager1数据源的数据、有时查询的是manager2源的数据
二、原因
"t_mb_black"表没有配置到shardingsphere分库策略的表集合里边(该表没有配置分库策略)
三、解决
将"t_mb_black"表配置到shardingsphere的分库策略的表集合里边
注:本项目是以代码的形式配置的分库、分表策略,以下配置无法直接复制使用
##数据源类型,这里使用阿里的Druid
sharding.jdbc.datasource.type=com.alibaba.druid.pool.DruidDataSource
##数据库连接驱动
sharding.jdbc.datasource.driver=com.mysql.jdbc.Driver
##是否开启sharding-jdbc sql日志
sharding.jdbc.show.sql=true
#########-------MANAGE数据库类型配置-----#########
##db数据库类型 数据源名称
sharding.jdbc.datasource.manage.names=manage0,manage1
##db数据库类型的默认分库策略 数据库字段
sharding.jdbc.datasource.manage.defaultDatabaseStrategy.shardingColumn=vdnId
##db数据库类型的默认分库策略 数据库字段类型,支持 INTEGER 整型(使用取模的方式分库) DATETIME 时间类型(使用年月的方式分库)
sharding.jdbc.datasource.manage.defaultDatabaseStrategy.shardingColumnType=INTEGER
##db数据库类型使用默认分库策略的表集合
//将t_mb_black表添加到分库表记录中
sharding.jdbc.datasource.manage.defaultDatabaseStrategy.vdnId.shardingTables=t_mb_black,t_mb_xxx
注:遇到以上问题,如果是以配置文件的形式进行shardingsphere管理,可自行百度如何为表配置分库、分表策略,解决方法是一样的,为表配置分库策略即可