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.pswp.cn/diannao/83945.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/83945.shtml
英文地址,請注明出處:http://en.pswp.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?…