ShardingSphere:查询报错:Actual table `数据源名称.表名` is not in table rule configuration

目录

    • 简介
    • 异常信息
    • 排查
    • 原因
    • 解决


简介

1、使用ShardingSphere框架,版本为5.2.1

<dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core</artifactId><version>5.2.1</version>
</dependency>

2、SQL涉及多表链接查询时会报错

3、表分片字段:subTableDate


异常信息

2025-05-13 11:06:34.072 - [ERROR] - [http-nio-8091-exec-1] - [o.s.boot.web.servlet.support.ErrorPageFilter - line:182]: Forwarding to error page from request [/home/getVisitorQA] due to exception [
### Error querying database.  Cause: java.sql.SQLException: Actual table `xxxrobot0.t_robot_messageReplay_202505` is not in table rule configuration.
### The error may exist in file [/home/xxx/devtest/robot_llm/tomcat10-robotMg_llm-8091/webapps/xxxRobotMg-llm/WEB-INF/classes/mappings/visitor/RobotMessagereplayMapper.xml]
### The error may involve com.xxx.mapper.visitor.RobotMessagereplayMapper.selectVisitorQA-Inline
### The error occurred while setting parameters
### SQL: SELECT if(isOld=1,2,1) vType,if(isOld=1,'老用户咨询量','新用户咨询量') vTypeName,count(1) qty,   SUM(if(a.hours=0,1,0)) qty0,   SUM(if(a.hours=1,1,0)) qty1,   SUM(if(a.hours=2,1,0)) qty2,   SUM(if(a.hours=3,1,0)) qty3,   SUM(if(a.hours=4,1,0)) qty4,   SUM(if(a.hours=5,1,0)) qty5,   SUM(if(a.hours=6,1,0))   qty6,   SUM(if(a.hours=7,1,0)) qty7,   SUM(if(a.hours=8,1,0)) qty8,   SUM(if(a.hours=9,1,0)) qty9,   SUM(if(a.hours=10,1,0)) qty10,   SUM(if(a.hours=11,1,0)) qty11,   SUM(if(a.hours=12,1,0)) qty12,   SUM(if(a.hours=13,1,0)) qty13,   SUM(if(a.hours=14,1,0)) qty14,   SUM(if(a.hours=15,1,0)) qty15,   SUM(if(a.hours=16,1,0)) qty16,   SUM(if(a.hours=17,1,0)) qty17,   SUM(if(a.hours=18,1,0)) qty18,   SUM(if(a.hours=19,1,0)) qty19,   SUM(if(a.hours=20,1,0)) qty20,   SUM(if(a.hours=21,1,0)) qty21,   SUM(if(a.hours=22,1,0)) qty22,   SUM(if(a.hours=23,1,0)) qty23   FROM t_robot_sessionmsg c   LEFT JOIN t_robot_messageReplay a ON a.SessionID=c.SessionID where a.subTableDate   between ? and ?        and a.companyId = ?       GROUP BY c.isOld
### Cause: java.sql.SQLException: Actual table `xxxrobot0.t_robot_messageReplay_202505` is not in table rule configuration.
; Actual table `xxxrobot0.t_robot_messageReplay_202505` is not in table rule configuration.]
org.springframework.dao.DataIntegrityViolationException: 
### Error querying database.  Cause: java.sql.SQLException: Actual table `xxxrobot0.t_robot_messageReplay_202505` is not in table rule configuration.
### The error may exist in file [/home/xxx/devtest/robot_llm/tomcat10-robotMg_llm-8091/webapps/xxxRobotMg-llm/WEB-INF/classes/mappings/visitor/RobotMessagereplayMapper.xml]
### The error may involve com.xxx.mapper.visitor.RobotMessagereplayMapper.selectVisitorQA-Inline
### The error occurred while setting parameters
### SQL: SELECT if(isOld=1,2,1) vType,if(isOld=1,'老用户咨询量','新用户咨询量') vTypeName,count(1) qty,   SUM(if(a.hours=0,1,0)) qty0,   SUM(if(a.hours=1,1,0)) qty1,   SUM(if(a.hours=2,1,0)) qty2,   SUM(if(a.hours=3,1,0)) qty3,   SUM(if(a.hours=4,1,0)) qty4,   SUM(if(a.hours=5,1,0)) qty5,   SUM(if(a.hours=6,1,0))   qty6,   SUM(if(a.hours=7,1,0)) qty7,   SUM(if(a.hours=8,1,0)) qty8,   SUM(if(a.hours=9,1,0)) qty9,   SUM(if(a.hours=10,1,0)) qty10,   SUM(if(a.hours=11,1,0)) qty11,   SUM(if(a.hours=12,1,0)) qty12,   SUM(if(a.hours=13,1,0)) qty13,   SUM(if(a.hours=14,1,0)) qty14,   SUM(if(a.hours=15,1,0)) qty15,   SUM(if(a.hours=16,1,0)) qty16,   SUM(if(a.hours=17,1,0)) qty17,   SUM(if(a.hours=18,1,0)) qty18,   SUM(if(a.hours=19,1,0)) qty19,   SUM(if(a.hours=20,1,0)) qty20,   SUM(if(a.hours=21,1,0)) qty21,   SUM(if(a.hours=22,1,0)) qty22,   SUM(if(a.hours=23,1,0)) qty23   FROM t_robot_sessionmsg c   LEFT JOIN t_robot_messageReplay a ON a.SessionID=c.SessionID where a.subTableDate   between ? and ?        and a.companyId = ?       GROUP BY c.isOld
### Cause: java.sql.SQLException: Actual table `xxxrobot0.t_robot_messageReplay_202505` is not in table rule configuration.
; Actual table `xxxrobot0.t_robot_messageReplay_202505` is not in table rule configuration.at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.doTranslate(SQLStateSQLExceptionTranslator.java:118)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:107)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:116)at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:93)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:347)at jdk.proxy3/jdk.proxy3.$Proxy117.selectList(Unknown Source)at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:194)at org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:147)at org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:80)at org.apache.ibatis.binding.MapperProxy$PlainMethodInvoker.invoke(MapperProxy.java:141)at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:86)at jdk.proxy3/jdk.proxy3.$Proxy316.selectVisitorQA(Unknown Source)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)at jdk.proxy3/jdk.proxy3.$Proxy317.selectVisitorQA(Unknown Source)at com.xxx.service.Impl.visitor.RobotMessagereplayServiceImpl.getVisitorQA(RobotMessagereplayServiceImpl.java:164)at com.xxx.controller.rpt.HomeController.getVisitorQA(HomeController.java:184)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:355)at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:196)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)at org.springframework.aop.framework.adapter.AfterReturningAdviceInterceptor.invoke(AfterReturningAdviceInterceptor.java:57)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:173)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:768)at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:720)at com.xxx.controller.rpt.HomeController$$SpringCGLIB$$0.getVisitorQA(<generated>)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:255)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:188)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:926)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:831)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1089)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:979)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:914)at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:590)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885)at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:195)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)at com.xxx.filter.XssFilter.doFilter(XssFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:108)at org.springframework.security.web.FilterChainProxy.lambda$doFilterInternal$3(FilterChainProxy.java:231)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:365)at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:117)at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126)at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131)at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:179)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at com.xxx.jwt.JwtAuthenticationTokenFilter.doFilterInternal(JwtAuthenticationTokenFilter.java:145)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:107)at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:93)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90)at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:82)at org.springframework.security.web.context.SecurityContextHolderFilter.doFilter(SecurityContextHolderFilter.java:69)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:374)at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:233)at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:191)at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)at org.springframework.web.servlet.handler.HandlerMappingIntrospector.lambda$createCacheFilter$3(HandlerMappingIntrospector.java:195)at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:113)at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:74)at org.springframework.security.config.annotation.web.configuration.WebMvcSecurityConfiguration$CompositeFilterChainProxy.doFilter(WebMvcSecurityConfiguration.java:230)at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:362)at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:278)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:124)at org.springframework.boot.web.servlet.support.ErrorPageFilter$1.doFilterInternal(ErrorPageFilter.java:99)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)at org.springframework.boot.web.servlet.support.ErrorPageFilter.doFilter(ErrorPageFilter.java:117)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:164)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:140)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:483)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:670)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:344)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:397)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:905)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1743)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.sql.SQLException: Actual table `xxxrobot0.t_robot_messageReplay_202505` is not in table rule configuration.at org.apache.shardingsphere.infra.util.exception.external.sql.ShardingSphereSQLException.toSQLException(ShardingSphereSQLException.java:54)at org.apache.shardingsphere.dialect.SQLExceptionTransformEngine.toSQLException(SQLExceptionTransformEngine.java:51)at org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.execute(ShardingSpherePreparedStatement.java:409)at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65)at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:80)at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:65)at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:336)at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:158)at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:110)at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:90)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:154)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:142)at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)at java.base/java.lang.reflect.Method.invoke(Method.java:580)at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:333)... 136 common frames omitted

排查

1、单表查询SQL分片正常、查询正常

2、其他多表链接查询的SQL也正常

3、只有以下SQL查询报错,所以问题是出在SQL上

补充:以下SQL在其他ShardingSphere版本的框架上是可以正常执行的,所以问题也与ShardingSphere的框架版本有关

SELECT if(isOld=1,2,1) vType,if(isOld=1,'老用户咨询量','新用户咨询量') vTypeName,count(1) qty,SUM(if(a.hours=0,1,0)) qty0,SUM(if(a.hours=1,1,0)) qty1,SUM(if(a.hours=2,1,0)) qty2,SUM(if(a.hours=3,1,0)) qty3,SUM(if(a.hours=4,1,0)) qty4,SUM(if(a.hours=5,1,0)) qty5,SUM(if(a.hours=6,1,0)) qty6,SUM(if(a.hours=7,1,0)) qty7,SUM(if(a.hours=8,1,0)) qty8,SUM(if(a.hours=9,1,0)) qty9,SUM(if(a.hours=10,1,0)) qty10,SUM(if(a.hours=11,1,0)) qty11,SUM(if(a.hours=12,1,0)) qty12,SUM(if(a.hours=13,1,0)) qty13,SUM(if(a.hours=14,1,0)) qty14,SUM(if(a.hours=15,1,0)) qty15,SUM(if(a.hours=16,1,0)) qty16,SUM(if(a.hours=17,1,0)) qty17,SUM(if(a.hours=18,1,0)) qty18,SUM(if(a.hours=19,1,0)) qty19,SUM(if(a.hours=20,1,0)) qty20,SUM(if(a.hours=21,1,0)) qty21,SUM(if(a.hours=22,1,0)) qty22,SUM(if(a.hours=23,1,0)) qty23
FROM t_robot_sessionmsg c
LEFT JOIN t_robot_messageReplay a ON a.SessionID=c.SessionID 
where a.subTableDate between 'xxx' and 'xxx'
and a.companyId = 'xxx'
GROUP BY c.isOld

4、发现使用分片键的表不是主表c,而是外链表a

-- a表是外链表,c表才是主表
where a.subTableDate between 'xxx' and 'xxx'

5、将主表的分片键作为查询条件,SQL可正常查询

-- 改为:c.subTableDate
where c.subTableDate between 'xxx' and 'xxx'

原因

SQL查询where条件没有涉及主表分片键

补充:以上SQL在其他ShardingSphere版本的框架上是可以正常执行的,所以问题也与ShardingSphere的框架版本有关


解决

将主键分片键加入SQL查询where条件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/83945.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB聚合查询:从入门到精通

文章目录 前言一、工具一般聚合查询分为四步 二、使用步骤1.MongoDB Compass2.Studio 3T 二、举个栗子总结 前言 Mongo 聚合查询 一般用mongo做数据库,涉及到关联查询情况不多,但是还有些情况要使用到,今天就讲下如何通过工具做关联查询,最终聚合结果,得到最终的查询结果集; …

codeup添加流水线docker自动化部署

在项目根目录下增加Dockerfile文件 # 使用基础镜像 FROM maven:3.8.4-openjdk-17-slim AS build # 设置工作目录 WORKDIR /app # 复制项目源代码 COPY . . # 构建项目 RUN mvn clean package -DskipTests # 验证JAR包是否生成 RUN ls -l target/your-project.jar # 使用合适的…

从 Word2Vec 到 BERT:AI 不止是词向量,更是语言理解

一、前言 在上篇文章中&#xff0c;我们介绍了Word2Vec以及它的作用&#xff0c;总的来说&#xff1a; Word2Vec是我们理解NLP的第一站 Word2Vec将词变成了“向量”—— 终于可以用机器理解词语的相似度 我们获得了例如“国王 - 男人 女人 ≈ 女王” 的类比能力 我们可以将…

镜像管理(2)Dockerfile总结

一、docker镜像构建方法 commoit :使用 docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为黑 箱镜像,换句话说,就是除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根 本无从得知。而且,即使是这个制作镜像的人,过一段时间后也无法记清具…

机器学习第十七讲:PCA → 把100维数据压缩成3D视图仍保持主要特征

机器学习第十七讲&#xff1a;PCA → 把100维数据压缩成3D视图仍保持主要特征 资料取自《零基础学机器学习》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之前写的文章&#xff1a;DeepSeek R1本地与线上满血版部署&#xff1a;超详细手把手指南 主…

【Linux庖丁解牛】——进程等待!

1. 进程退出场景 进程退出一般有三种场景&#xff1a; 。代码运行完毕&#xff0c;结果正确 。代码运行完毕&#xff0c;结果错误【比如&#xff0c;我们要对某个文件进行写入&#xff0c;但写入的文件路径出错&#xff0c;代码运行完毕&#xff0c;可是结果出错】 。代码异…

鸿蒙OSUniApp 制作简洁高效的标签云组件#三方框架 #Uniapp

UniApp 制作简洁高效的标签云组件 在移动端应用中&#xff0c;标签云&#xff08;Tag Cloud&#xff09;是一种常见的UI组件&#xff0c;它以视觉化的方式展示关键词或分类&#xff0c;帮助用户快速浏览和选择感兴趣的内容。本文将详细讲解如何在UniApp框架中实现一个简洁高效的…

ubuntu14.04/16.06 安装vscode(实测可以用)

地址&#xff1a;https://code.visualstudio.com/updates/v1_38 选择deb 这个版本还支持ubuntu14.04和16.06 sudo dpkg -i code_1.38.1-1568209190_amd64.deb sudo apt-get install -f安装成功&#xff0c;正常使用

WebRTC技术EasyRTC音视频实时通话驱动智能摄像头迈向多场景应用

一、方案背景​ 在物联网蓬勃发展的当下&#xff0c;智能摄像头广泛应用于安防、家居、工业等领域。但传统智能摄像头存在视频传输延迟高、设备兼容性差、网络波动时传输不稳定等问题&#xff0c;难以满足用户对实时流畅交互视频的需求。EasyRTC凭借低延迟、高可靠、跨平台特性…

Java EE进阶1:导读

1.发展历程 2.学习内容 前⾯的课程中,学习的是Java基础,JavaEE主要学习Java的应用,也就是学习Java在企业中是如何应用的 Java更多场景是业务开发,更狭义点可以理解为web开发.所以咱们的学习也是围绕着如何使用Java来做web开发 2.1 什么是Web开发&#xff1f; web&#xff08…

APPtrace 智能参数系统:重构 App 用户增长与运营逻辑

一、免填时代&#xff1a;APPtrace 颠覆传统参数传递模式 传统 App 依赖「邀请码 / 手动绑定」实现用户关联&#xff0c;流程繁琐导致 20%-30% 的用户流失。APPtrace 通过 **「链接参数自动传递 安装后智能识别」** 技术&#xff0c;让用户在无感知状态下完成关系绑定、场景还…

bisheng系列(一)- 本地部署(Docker)

目录 一、导读 二、说明 1、镜像说明 2、本节内容 三、docker部署 1、克隆代码 2、运行镜像 3、可能的错误信息 四、页面测试 1、注册用户 2、登陆成功 3、添加模型 一、导读 环境&#xff1a;Ubuntu 24.04、Windows 11、WSL 2、Python 3.10 、bisheng 1.1.1 背景…

docker介绍与常用命令汇总

docker简介 docker是什么&#xff1f; Docker 是一个开源的应用容器引擎&#xff0c;它可以让开发者将应用与运行环境打包成一个标准的、可移植的容器&#xff08;Container&#xff09;&#xff0c;在任何地方都可以快速部署和运行&#xff0c;无需关心底层环境是否一致。 …

Android 中拖拽从一个组件到另外一个组件的写法(跨容器拖拽)

在 Android 中&#xff0c;拖拽一个图片&#xff08;例如 ImageView&#xff09;到另一个组件&#xff08;如 LinearLayout、FrameLayout 等容器&#xff09;涉及以下步骤&#xff1a; 准备工作 源组件&#xff1a;你从哪里开始拖动&#xff08;如 ImageView&#xff09;。 目…

火绒互联网安全软件:自主引擎,精准防御

在数字时代&#xff0c;网络安全是每一个用户都必须重视的问题。无论是个人用户还是企业用户&#xff0c;都需要一款高效、可靠的反病毒软件来保护设备免受恶意软件的侵害。今天&#xff0c;我们要介绍的 火绒互联网安全软件&#xff0c;就是这样一款由资深工程师主导研发并拥有…

使用亮数据代理IP+Python爬虫批量爬取招聘信息训练面试类AI智能体(手把手教学版)

文章目录 一、为什么要用代理IP&#xff1f;(重要&#xff01;&#xff01;&#xff01;)二、环境准备&#xff08;三件套走起&#xff09;2.1 安装必备库&#xff08;pip大法好&#xff09;2.2 获取亮数据代理&#xff08;官网注册送试用&#xff09; 三、编写爬虫代码&#x…

Android屏幕采集编码打包推送RTMP技术详解:从开发到优化与应用

在现代移动应用中&#xff0c;屏幕采集已成为一个广泛使用的功能&#xff0c;尤其是在实时直播、视频会议、远程教育、游戏录制等场景中&#xff0c;屏幕采集技术的需求不断增长。Android 平台为开发者提供了 MediaProjection API&#xff0c;这使得屏幕录制和采集变得更加简单…

互联网大厂Java求职面试:Spring AI与大模型交互的高级模式与自定义开发

互联网大厂Java求职面试&#xff1a;Spring AI与大模型交互的高级模式与自定义开发 在当今技术领域&#xff0c;随着AI和大模型技术的广泛应用&#xff0c;如何在复杂的系统架构中高效地集成这些技术成为了各大互联网公司关注的重点。本文将通过一场模拟的面试对话&#xff0c…

MySQL 8.0 OCP 1Z0-908 161-170题

Q161.Examine this command, which executes successfully: cluster.addInstance ( ‘:’,{recoveryMethod: ‘clone’ 1}) Which three statements are true? (Choose three.) A)The account used to perform this recovery needs the BACKUP_ ADMIN privilege. B)A target i…

蓝桥杯1447 砝码称重

问题描述 你有一架天平和 N 个砝码&#xff0c;这 N 个砝码重量依次是 W1,W2,⋅⋅⋅,WN​。 请你计算一共可以称出多少种不同的重量&#xff1f; 注意砝码可以放在天平两边。 输入格式 输入的第一行包含一个整数 N。 第二行包含 N 个整数&#xff1a;W1,W2,W3,⋅⋅⋅,WN​…