shardingsphere-jdbc5.5.2踩坑记录

最近正在研究拆表,随手从官网拿来了shardingsphere-jdbc进行使用。本以为按照官网文档手到擒来~毕竟10年的老开发了。没想到~xxxx

直接说结论

1.配置分表规则时,使用shardingsphere-jdbc 5.5.2的版本,除了配置基本的- !SHARDING 以外,还得额外配置!Single。否则sharding分表执行未配置分表规则的表sql时会报找不到表!!!

rules:
  - !SINGLE
    tables:
      - "ds.*"
    defaultDataSource: ds
  - !SHARDING
    tables:
      business1:
        actualDataNodes:  ds.business1_$->{0..3000},ds.business1
        tableStrategy:
          complex:
            shardingColumns: group_id
            shardingAlgorithmName: group-sharding

请一定要注意这个

- !SINGLE 说多了都是泪。好了,当到这一步时,我已经兴高采烈的去执行了。心想着还行吧,小问题。毕竟网上都有答案。

2.严重坑,需要注意。

首先说状况,在rule的SHARDING配置里的配置的逻辑表名,如我上文的business1,居然说不存在!???

我再三确认我数据库中是存在business1的。网上找了一堆资料都没有结论,没有办法只能跟源码。这里我直接说答案,

注意:在actualDataNodes里的第一个节点,一定要在数据库中存在对应的表,不然会被过滤掉

 

由于我数据库中的表叫business1,其它的表是以后再加的,因为我这的业务不希望全部数据都分。可能只有一小部分数据按业务分

所以这里需要调整顺序,把business1这个放前面,如下

rules:
  - !SINGLE
    tables:
      - "ds.*"
    defaultDataSource: ds
  - !SHARDING
    tables:
      business1:
        actualDataNodes:  ds.business1, ds.business1_$->{0..3000}
        tableStrategy:
          complex:
            shardingColumns: group_id
            shardingAlgorithmName: group-sharding

好了,启动~成功!!!

再见!!!

posted @ 2025-07-19 15:04  GodTelMe  阅读(185)  评论(0)    收藏  举报