Mycat之find no Route:SELECT * FROM `db1`.`t_gaojs` LIMIT 0
错误原因竟然是:DruidSelectParser类中的tryRoute方法
1、后台报错,前台竟然可以查询出数据
2017-03-01 20:37:59,312 [WARN ][$_NIOREACTOR-3-RW] ServerConnection [id=1, schema=TESTDB, host=127.0.0.1, user=root,txIsolation=3, autocommit=true, schema=TESTDB]SELECT * FROM `db1`.`t_gaojs` LIMIT 0 err:java.sql.SQLNonTransientException: find no Route:SELECT * FROM `db1`.`t_gaojs` LIMIT 0 java.sql.SQLNonTransientException: find no Route:SELECT * FROM `db1`.`t_gaojs` LIMIT 0
at io.mycat.route.parser.druid.impl.DruidSelectParser.tryRoute(DruidSelectParser.java:437)
错误原因竟然是:DruidSelectParser类中的tryRoute方法
private void tryRoute(SchemaConfig schema, RouteResultset rrs,
LayerCachePool cachePool) throws SQLNonTransientException {
if(rrs.isFinishedRoute())
{
return;//避免重复路由
}
//无表的select语句直接路由带任一节点
if((ctx.getTables() == null || ctx.getTables().size() == 0)
&&(ctx.getTableAliasMap()==null||ctx.getTableAliasMap().isEmpty())) {
rrs = RouterUtil.routeToSingleNode(rrs, schema.getRandomDataNode(), ctx.getSql());
rrs.setFinishedRoute(true);
return;
}
//RouterUtil.tryRouteForTables(schema, ctx, rrs, true, cachePool);
SortedSet<RouteResultsetNode> nodeSet = new TreeSet<RouteResultsetNode>();
boolean isAllGlobalTable = RouterUtil.isAllGlobalTable(ctx, schema);
for (RouteCalculateUnit unit : ctx.getRouteCalculateUnits()) {
RouteResultset rrsTmp = RouterUtil.tryRouteForTables(schema, ctx, unit, rrs, true, cachePool);
if (rrsTmp != null&&rrsTmp.getNodes()!=null) {
for (RouteResultsetNode node : rrsTmp.getNodes()) {
nodeSet.add(node);
}
}
if(isAllGlobalTable) {//都是全局表时只计算一遍路由
break;
}
}
if(nodeSet.size() == 0) {
Collection<String> stringCollection= ctx.getTableAliasMap().values() ;
for (String table : stringCollection)
{
if(table!=null&&table.toLowerCase().contains("information_schema."))
{
rrs = RouterUtil.routeToSingleNode(rrs, schema.getRandomDataNode(), ctx.getSql());
rrs.setFinishedRoute(true);
return;
}
}
String msg = " find no Route:" + ctx.getSql();
LOGGER.warn(msg);
throw new SQLNonTransientException(msg);
}
RouteResultsetNode[] nodes = new RouteResultsetNode[nodeSet.size()];
int i = 0;
for (Iterator<RouteResultsetNode> iterator = nodeSet.iterator(); iterator.hasNext();) {
nodes[i] = (RouteResultsetNode) iterator.next();
i++;
}
rrs.setNodes(nodes);
rrs.setFinishedRoute(true);
}
相关推荐
Mycat-server-1.6-RELEASE-20161028204710-linux.tar
- 下载:首先从官方网站或者可靠的源获取适合Windows环境的Mycat版本,例如“Mycat-server-1.6-RELEASE-20161028204710-win”。 - 解压:将下载的压缩包解压到本地目录,通常包含Mycat的服务器端程序。 - 配置:...
1. **bin** 目录:包含了MyCat的启动脚本(如`mycat-start.sh`、`mycat-stop.sh`)、日志清理脚本等。 2. **conf** 目录:存放MyCat的配置文件,如`schema.xml`(定义数据节点和表的分片策略)、`server.xml`...
【标题】"mycat2 install-template(mycat2-install-template-1.21.zip)" 指的是MyCat 2的一个安装模板文件,版本为1.21,通常包含了安装MyCat 2所需的所有配置文件和脚本,用于简化部署过程。 【描述】虽然描述...
在标题"Mycat-server-1.6.7.6-release-windows-linux.rar"中,我们可以看到这是Mycat的1.6.7.6版本服务器的发布包,同时提供了适用于Windows和Linux两种操作系统平台的安装包。这表明Mycat具有良好的跨平台特性,...
《Mycat-server-1.6.6.1在Linux环境下的部署与应用》 Mycat是一款开源的分布式数据库中间件,它主要用于解决大数据环境下单机数据库的性能瓶颈问题,实现了数据的分布式存储和处理。Mycat-server-1.6.6.1是其在2018...
在这个最新版的 Linux Mycat-server-1.6.7.5-release-20200410174409-linux.tar.gz 压缩包中,包含了运行 Mycat 服务所需的所有组件和配置文件。 1. **Mycat 的核心功能** - **分库分表**:Mycat 可以将一个大表...
### **数据量大的几种解决方案** - mysql集群, 主从,读写分离 - 冷热分离,部分冷数据(不经常使用的数据)移...- 分库分表 mycat/ shadingjdbc - NewSQL数据库,hbase 没有1个积分的私聊我哈,我给你免费。。。。。
本文将详细解析Mycat-server-1.6.7.3-release-20190809210613-linux.tar.gz这个版本的Mycat服务器。 Mycat的核心理念是数据库分片,即将一个大表分散存储在多个物理节点上,通过特定算法进行数据路由,实现水平扩展...
mycat2(original-mycat2-1.22-release-jar-with-dependencies.jar)
Mycat-server-1.6.6.1-release-20181031195535-linux.tar.gz版本下载
mycat2(mycat2-1.22-release-jar-with-dependencies.jar)
《深入解析mycat2:基于mycat2-1.21-release-jar-with-dependencies.jar的分布式数据库中间件》 mycat2是一款开源的、高性能的、基于Java开发的分布式数据库中间件,它旨在解决大数据分布式存储和处理的问题。mycat...
【标题】"Mycat-server-1.6.7.3-release-20190927161129-win.tar.gz" 提供的是Mycat数据库中间件的一个特定版本,适用于Windows系统。这个文件是一个经过压缩的归档文件,其扩展名是`.tar.gz`,意味着它首先被打包成...
在这个标题为"Mycat-server-1.6.7.1-release-20190213150257-linux.tar.gz"的压缩包中,包含了运行Mycat服务所需的所有文件,适用于Linux环境,特别是CentOS7系统。 首先,我们需要了解Mycat的核心功能。Mycat的...
在本文中,我们将详细探讨最新版的Mycat——Mycat-server-1.6.7.5-release-20200410174409在Windows操作系统上的安装、配置和使用。 1. **下载与解压** 首先,你需要从官方网站或可信的源获取`windows Mycat-...
在标题中提到的"Mycat-server-1.6.7.1-release-20200209222254-win.tar.gz",这是Mycat的一个特定版本——1.6.7.1,适用于Windows操作系统。这个压缩包包含了部署Mycat在Windows环境所需的所有文件。 Mycat的核心...
【标题】"Mycat-server-1.6"是一个针对大型分布式数据库系统设计的开源数据库中间件,主要用于解决海量数据的存储与访问问题。在Linux环境下安装Mycat,是构建高可用、高并发数据库集群的关键步骤。 【描述】"Linux...
MyCAT 是一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务、ACID、可以替代Mysql的加强版数据库, 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群,一个融合内存缓存技术、Nosql...
Mycat-server-1.6.5-release-20180122220033-linux是专为Linux环境设计的版本,它提供了读写分离、数据库分库分表、主从备份等一系列关键功能,旨在优化数据库性能,提高系统的可扩展性和可用性。 首先,让我们深入...