【记】研究Sharding-JDBC遇到的一个异常(Caused by: io.shardingsphere.core.exception.ShardingException: Cannot get

 

1、异常信息java

Caused by: io.shardingsphere.core.exception.ShardingException: Cannot get uniformed table structure for `t`. The different meta data of actual tables are as followsnode

异常信息提示找不到表的元数据信息,也就是找不到表,可是数据表实际已经建立。数据库

这个异常信息网上基本搜不到有效的信息和解决方案orm

 

2、排查过程get

at io.shardingsphere.core.metadata.table.executor.TableMetaDataLoader.checkUniformed(TableMetaDataLoader.java:136)
at io.shardingsphere.core.metadata.table.executor.TableMetaDataLoader.load(TableMetaDataLoader.java:68)
at io.shardingsphere.core.metadata.table.executor.TableMetaDataLoader.load(TableMetaDataLoader.java:63)源码

private TableMetaData load(final TableRule tableRule, final ShardingDataSourceNames shardingDataSourceNames) {
List<TableMetaData> actualTableMetaDataList = loadActualTableMetaDataList(tableRule.getActualDataNodes(), shardingDataSourceNames);
checkUniformed(tableRule.getLogicTable(), actualTableMetaDataList);
return actualTableMetaDataList.iterator().next();
}

上述为异常栈信息,经过跟踪源码的方式发现最下面load方法中的 tableRule.getActualDataNodes()返回的是t0、t1两个数据,分表的配置也是:actual-data-nodes=ds_0.t$->{0..1}it

 

根据上述信息分析发现,配置的表是t0,t1,可是数据库实际只建立了t0表,因此抛出上述异常,再建立t1表便可解决问题io

 

3、总结table

   使用第三方库遇到问题网上又找不到有效的解决方案时,可尝试经过跟踪源码的方式找到问题缘由 form

相关文章
相关标签/搜索