mycat之string msg = "can't find table define in schema " tablename " schema:" schema.getname();
错误位置如下:routerutil 类中的tryroutefortables方法
1、正常情况可以查询数据
2、别名查询出现错误
mycat 怎么就通过不了呢
2017-03-01 20:13:19,812 [warn ][$_nioreactor-2-rw] serverconnection [id=4, schema=testdb, host=127.0.0.1, user=root,txisolation=3, autocommit=true, schema=testdb]select address as address from `t_gaojs` err:java.sql.sqlnontransientexception: can't find table define in schema address schema:testdb java.sql.sqlnontransientexception: can't find table define in schema address schema:testdb
at io.mycat.route.util.routerutil.tryroutefortables(routerutil.java:1002)
at io.mycat.route.parser.druid.impl.druidselectparser.tryroute(druidselectparser.java:412)
at io.mycat.route.parser.druid.impl.druidselectparser.changesql(druidselectparser.java:287)
at io.mycat.route.parser.druid.impl.defaultdruidparser.parser(defaultdruidparser.java:67)
找到报错原因 ---》 表名字解析错误
错误位置:
routerutil 类中的tryroutefortables方法
/**
* 多表路由
*/
public static routeresultset tryroutefortables(schemaconfig schema, druidshardingparseinfo ctx,
routecalculateunit routeunit, routeresultset rrs, boolean isselect,
layercachepool cachepool)
throws sqlnontransientexception {
list
if(schema.isnosharding()||(tables.size() >= 1&&isnosharding(schema,tables.get(0)))) {
return routetosinglenode(rrs, schema.getdatanode(), ctx.getsql());
}
//只有一个表的
if(tables.size() == 1) {
return routerutil.tryrouteforonetable(schema, ctx, routeunit,
tables.get(0), rrs, isselect, cachepool);
}
set
//每个表对应的路由映射
map
//分库解析信息不为空
map
if(tablesandconditions != null && tablesandconditions.size() > 0) {
//为分库表找路由
routerutil.findroutewithcconditionsfortables(schema, rrs, tablesandconditions,
tablesroutemap, ctx.getsql(), cachepool, isselect);
if(rrs.isfinishedroute()) {
return rrs;
}
}
//为全局表和单库表找路由
for(string tablename : tables) {
tableconfig tableconfig = schema.gettables().get(tablename.touppercase());
if(tableconfig == null) {
string msg = "can't find table define in schema " tablename " schema:" schema.getname();
logger.warn(msg);
throw new sqlnontransientexception(msg);
}
if(tableconfig.isglobaltable()) {//全局表
if(tablesroutemap.get(tablename) == null) {
tablesroutemap.put(tablename, new hashset
}
tablesroutemap.get(tablename).addall(tableconfig.getdatanodes());
} else if(tablesroutemap.get(tablename) == null) { //余下的表都是单库表
tablesroutemap.put(tablename, new hashset
tablesroutemap.get(tablename).addall(tableconfig.getdatanodes());
}
}
//此处省略如下代码
}
相关推荐
mycat-server-1.6 源码,可调试
mycat2 install-template(mycat2-install-template-1.21.zip)
mycat-server-1.6.6.1-release-20180908155252-linux.tar.gz
mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz版本下载
mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
mycat2 install-template(mycat2-install-template-1.20.zip)
mycat - 数据库中间件 活跃的、性能好的开源数据库中间件!
mycat2(original-mycat2-1.22-release-jar-with-dependencies.jar)
最新版linux mycat-server-1.6.7.5-release-20200410174409-linux.tar.gz
### **数据量大的几种凯发k8国际娱乐官网入口的解决方案** - mysql集群, 主从,读写分离 - 冷热分离,部分冷数据(不经常使用的数据)移...- 分库分表 mycat/ shadingjdbc - newsql数据库,hbase 没有1个积分的私聊我哈,我给你免费。。。。。
mycat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 mysql 协议的服务器,前端用户可以把它看作是一个数据库代理,用 mysql 客户端工具和命令行访问,而其后端可以用 mysql 原生协议与多个 ...
mycat2(mycat2-1.21-release-jar-with-dependencies.jar)
mycat-server-1.5.1-release-20160405120037-linux.tar.gz
window版本:mycat-server-1.6-release-20161028204710-win.tar.gz
mycat是一个开源的分布式数据库系统,是一个实现了mysql协议的服务器,前端用户可以把它看作是一个数据库代理,用mysql客户端工具和命令行访问,而其后端可以用mysql原生协议与多个mysql服务器通信,也可以用jdbc...
mycat-server-1.5-release-20160301083012-linux.tar.gz
该资源为mycat 1.6.7.1 的windows版,可实现数据库的读写分离、以及分库分表等操作
mycat-server-1.6.7.6-release.jar 源码所需的pom.xml文件
mycat是一个广受好评的数据库中间件。支持mysql、oracle、db2、sql server、postgresql等db的常见sql语法。
mycat2 v1.21-2022-4-7源码(mycat2-1.21-2022-4-7.zip)