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 源码,可调试
mycat schema.xml中的通配符配置,很好的mycat入门资料,适合初学者。
自己从买球官网平台官网下载的mycat,配置文件中的server.xml和schema.xml已在本地安装环境测试可用,server_default.xml和schema_default.xml有写学习到的一些标签的注解
mycat-server-1.6.7.5-release-20200422133810-linux .tar.gz
mycat-server-1.6.6.1-release-20180908155252-linux.tar.gz
window版本:mycat-server-1.6-release-20161028204710-win.tar.gz
mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz
最新版windows mycat-server-1.6.7.4-release-20200105164103-win.tar.gz
最新版linux mycat-server-1.6.7.5-release-20200410174409-linux.tar.gz
mycat中间件 linux环境版本1.6.5,可以实现读写分离,分库,切片,主从备份,支持主流数据库
mycat - 数据库中间件 活跃的、性能好的开源数据库中间件!
### **数据量大的几种买球软件推荐的解决方案** - mysql集群, 主从,读写分离 - 冷热分离,部分冷数据(不经常使用的数据)移...- 分库分表 mycat/ shadingjdbc - newsql数据库,hbase 没有1个积分的私聊我哈,我给你免费。。。。。
mycat2 install-template(mycat2-install-template-1.20.zip)
mycat2 install-template(mycat2-install-template-1.21.zip)
mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz版本下载
mycat-server-1.6.7.1-release-20200209222254-linux.tar.gz
mycat 是目前最流行的基于 java 语言编写的数据库中间件,是一个实现了 mysql 协议的服务器,前端用户可以把它看作是一个数据库代理,用 mysql 客户端工具和命令行访问,而其后端可以用 mysql 原生协议与多个 ...
最新版windows mycat-server-1.6.7.5-release-20200410174409-win.tar.gz
mycat-server-1.5.1-release-20160405120037-linux.tar.gz
mycat-server-1.5-release-20160301083012-linux.tar.gz