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