当前位置: 首页 > news >正文

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条件

相关文章:

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

目录 简介异常信息排查原因解决 简介 1、使用ShardingSphere框架&#xff0c;版本为5.2.1 <dependency><groupId>org.apache.shardingsphere</groupId><artifactId>shardingsphere-jdbc-core</artifactId><version>5.2.1</version>…...

内部检测实验室数字化转型新路径 质检LIMS系统如何实现合规、效率、资质三重突破?

在高质量发展成为主旋律的今天&#xff0c;内部检测实验室作为企业质量管控的 “心脏”&#xff0c;正面临着合规标准升级、检测任务激增、设备管理复杂等多重挑战。传统管理模式下&#xff0c;数据追溯难、人员效率低、资质评审周期长等问题&#xff0c;成为制约实验室发展的核…...

PyTorch 的 F.scaled_dot_product_attention 返回Nan

“为什么 PyTorch 的 scaled_dot_product_attention 会输出 NaN&#xff1f;如何正确构造 Attention Mask” 引言&#xff1a;看似正常的 mask&#xff0c;为什么会引发 NaN&#xff1f; 在使用 F.scaled_dot_product_attention 构建跨模态或多源注意力时&#xff0c;我们常通…...

MySQL的触发器

本章了解一下即可&#xff0c;并不是很难&#xff0c;大家加油&#xff01;&#xff01;&#xff01; 触发器实际上是多表关联的一个操作&#xff0c;无需调用&#xff0c;是一个自动的过程&#xff0c;当对数据库表中的数据执行DML操作时自动触发这个SQL片段的执行&#xff0…...

高可用消息队列实战:AWS SQS 在分布式系统中的核心解决方案

引言&#xff1a;消息队列的“不可替代性” 在微服务架构和分布式系统盛行的今天&#xff0c;消息队列&#xff08;Message Queue&#xff09; 已成为解决系统解耦、流量削峰、异步处理等难题的核心组件。然而&#xff0c;传统的自建消息队列&#xff08;如RabbitMQ、Kafka&am…...

内存泄漏系列专题分析之十六:高通相机CamX内存泄漏内存占用分析--chi-cdk部分ION内存拆解方法

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:内存泄漏系列专题分析之十五:高通相机CamX架构chi-cdk部分ION内存管理机制CHI ImageBuffer原理 这一篇我们开始讲: 内存泄漏系列专题分析之十六:高通相机CamX内存泄漏&内存占用分析--chi-cdk部分…...

HANA数据库死锁

死锁是两个或多个事务相互交叉锁定的情况&#xff0c;因此任何事务都无法继续进行。 通常死锁是由应用程序设计缺陷引起的&#xff0c;但在主键约束的上下文中也可能存在更多的技术死锁&#xff08;这种情况请参考 SAP note 2429521&#xff09;。 当 HANA 数据库出现死锁时&am…...

Unity雷火UX工具插件中的本地化功能(Unity项目中文字图片多语言功能)

一、插件下载地址如下: 雷火UX工具插件下载 二、本地化功能,也就是多语言功能官方文档地址如下: 雷火UX工具本地化功能官方文档 三、UX Image组件需要注意的事项,也就是官方文档没有提到的地方。 1、UX Image组件所引用的Source Image资...

公路水运安全员B证主要考核内容有哪些

公路水运安全员B证&#xff08;交安B证&#xff09;是交通运输行业施工企业主要负责人和项目负责人必备的安全生产考核证书&#xff0c;主要考核以下内容&#xff1a; 一、安全生产法律法规&#xff08;30%&#xff09; 国家法律法规&#xff1a;重点考核《安全生产法》《建设…...

电缆故障常见故障及应对方法

一、常见故障类型及原因 1. 机械损伤 原因&#xff1a;安装时的过度牵引或弯曲、外力破坏&#xff08;如施工挖损、车辆振动&#xff09;、自然因素&#xff08;如土地沉降导致电缆拉伸&#xff09;等。 表现&#xff1a;绝缘层破损、金属护套裂损&#xff0c;可能发展为短…...

Rust 数据结构:String

Rust 数据结构&#xff1a;String Rust 数据结构&#xff1a;String什么是字符串&#xff1f;创建新字符串更新字符串将 push_str 和 push 附加到 String 对象后使用 运算符和 format! 宏 索引到字符串字符串在内存中的表示字节、标量值和字形簇 分割字符串遍历字符串的方法 R…...

算法基础 -- 小根堆构建的两种方式:上浮法与下沉法

小根堆构建的两种方式&#xff1a;上浮法与下沉法 在构建小根堆&#xff08;Min-Heap&#xff09;时&#xff0c;通常有两种常见的构建方式&#xff1a; 上浮建堆&#xff08;逐个插入&#xff0c;上浮调整&#xff09;下沉建堆&#xff08;Heapify 自底向上&#xff0c;下沉…...

Sprnig MVC 如何统一异常处理 (Exception Handling)?

主要有以下几种方式来实现统一异常处理&#xff0c;其中 ControllerAdvice (或 RestControllerAdvice) 结合 ExceptionHandler 是最常用的方式。 1. ExceptionHandler 注解 作用&#xff1a; 用于标记一个方法&#xff0c;该方法将处理在同一个 Controller 类中抛出的特定类型…...

03、基础入门-SpringBoot的大时代背景

03、基础入门-SpringBoot的大时代背景 # Spring Boot的大时代背景 Spring Boot的出现和发展&#xff0c;与以下时代背景密切相关&#xff1a; ## 1. 微服务架构的兴起 ### 背景 随着互联网应用的复杂度增加&#xff0c;传统的单体架构在扩展性、维护性和团队协作方面遇到瓶…...

【51单片机中断】

目录 配置流程 1.在IE寄存器中开启总中断通道和需要的某中断通道 2.在TCON寄存器开启所用中断的触发方式 3.使用中断函数完成中断 4.若需要中断嵌套则在IP寄存器中配置 5.若需要使用串口的中断&#xff0c;则配置SCON寄存器 6.代码示例 配置流程 1.在IE寄存器中开启总中…...

英飞凌tle9954 GPIO

9 通用输入输出(GPIO) 9.1 功能概述 通用输入 / 输出(GPIO)由输入 / 输出驱动级和端口控制逻辑组成。GPIO 具备以下功能: 输入 / 输出端口功能(PBx) 输出状态可编程,输入状态可读。输出驱动器可编程为推挽、开漏和三态模式。输出驱动器的驱动强度和转换速率(压摆率)可…...

Linux操作系统--进程间通信(system V共享内存)

目录 1.system V共享内存 2.共享内存数据结构 3.共享内存函数 4.实例代码&#xff1a; 1.system V共享内存 共享内存区是最快的IPC(进程间通信)形式。一旦这样的内存映射到共享它的进程地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再…...

力扣HOT100之二叉树:102. 二叉树的层序遍历

这道题太简单了&#xff0c;相当于基础的模板题&#xff0c;但凡涉及到层序遍历一定会用到队列来实现&#xff0c;其他的倒没啥好说的&#xff0c;用两层while循环来层序遍历&#xff0c;外层while循环用于控制访问二叉树的每一层&#xff0c;而内层while循环则负责收割每一层的…...

分布式锁: Redisson 实现分布式锁的原理与技术细节

在分布式系统中&#xff0c;分布式锁是协调多个节点对共享资源访问的核心机制之一。Redis 作为高性能内存数据库&#xff0c;常被用于实现分布式锁&#xff0c;而 Redisson 是 Java 生态中最成熟、功能最丰富的 Redis 客户端之一&#xff0c;其内置的分布式锁实现被广泛应用于生…...

day22-数据结构之 栈队列

一、栈 1.1 栈的基本概念 栈是限定仅在表尾进行插入和删除操作的线性表 栈的特性&#xff1a;先进后出、后进先出 栈顶:允许操作的一端栈底:不允许操作的一端 栈的使用分为入栈&#xff0c;出栈栈分为顺序栈和链式栈 1.2 栈的基本操作 链栈示意图&#xff1a;最好采取头插和头…...

Oracle 批量操作脚本解析:动态执行与分批次删除

一、脚本功能概述 本文分享两段 Oracle PL/SQL 脚本&#xff0c;分别实现动态 SQL 执行和大表分批次删除功能&#xff0c;适用于数据清洗、批量操作优化等场景。通过实际案例演示语法逻辑与使用场景。 二、脚本一&#xff1a;动态 SQL 执行与数据清理 1. 核心逻辑 从临时表t…...

我用 CodeBuddy 开发了一个颜色命名搜索器 —— ColorNameHub 的诞生记

我正在参加CodeBuddy「首席试玩官」内容创作大赛&#xff0c;本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 在一次整理设计稿配色时&#xff0c;我突然萌生了一个想法&#xff1a;“如果能输入一个颜色代码&#xff0c;就…...

强化学习算法实战:一个例子实现sarsa、dqn、ddqn、qac、a2c、trpo、ppo

简介 在学习强化学习算法&#xff1a;sarsa、dqn、ddqn、qac、a2c、trpo、ppo时&#xff0c;由于有大量数据公式的推导&#xff0c;觉得十分晦涩&#xff0c;且听过就忘记了。 但是当把算法应用于实战时&#xff0c;代码的实现要比数据推导要直观很多。 接下来通过不同的算法实…...

零基础玩转Apache Superset可视化部署

根据官方Quick Start Guide&#xff0c;你可以按照以下步骤进行部署&#xff1a; 1. 确认环境2. 获取代码3. 获取官方最新代码4. 启动服务5. 访问Superset Web界面6. 接入数据源 前提条件&#xff1a; dockerdocker compose 1. 确认环境 安装Docker和Docker Compose 确保你…...

单片机-STM32部分:18、WiFi模组

飞书文档https://x509p6c8to.feishu.cn/wiki/WFmqwImDViDUezkF7ercZuNDnve 一、WiFi模组应用 当设备需要连接网络&#xff0c;实现远程控制&#xff0c;状态监控时&#xff0c;就需要添加通信模组&#xff0c;常见的通信模组WiFi模组、2G模组、4G模组等&#xff1a; 我们的板卡…...

TLS 1.3黑魔法:从协议破解到极致性能调优

一、TLS协议逆向工程实验 1.1 密码学套件破解剧场 实验准备&#xff1a; 靶机&#xff1a;启用TLS 1.2的Nginx服务器 工具集&#xff1a;Wireshark OpenSSL s_client 定制Python脚本 实战攻击复现&#xff1a; # 强制使用弱加密套件连接 openssl s_client -connect exa…...

职业院校物联网安装调试员(工业数智技术)实训解决方案

一、物联网安装调试员 &#xff08;1&#xff09;职业定义&#xff1a; 利用检测仪器和专用工具&#xff0c;安装、配置、调试物联网产品与设备的人员。其工作任务就是要搭建数据互联的信息网络&#xff0c;并通过电子标签将真实的物体上网连接&#xff0c;并通过对各类设备的…...

mongodb用systemctl启动code=killed, signal=ABRT

参照在 Ubuntu 上安装 MongoDB Community Edition - 数据库手册 v8.0 - MongoDB Docs 安装后&#xff0c;sudo systemctl start mongod启动失败。 sudo systemctl status mongod 结果&#xff1a; mongod.service - MongoDB Database ServerLoaded: loaded (/lib/systemd/sys…...

基于51单片机和8X8点阵屏、矩阵按键的匹对消除类小游戏

目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、8X8点阵屏2、矩阵按键3、定时器04、定时器1 四、主函数总结 系列文章目录 前言 用的是普中A2开发板&#xff0c;用到板上的8X8LED点阵屏和矩阵按键。 【单片机】STC89C52RC 【频率】12T11.0592MHz 效果查看/操…...

智能呼叫系统中的NLP意图理解:核心技术解析与实战

引言&#xff1a;当AI拿起电话时 在智能客服、电话营销等场景中&#xff0c;智能呼叫系统正以每年23%的增长率重塑人机交互方式。而支撑这一变革的核心技术&#xff0c;正是自然语言处理&#xff08;NLP&#xff09;中的意图理解模块。本文将深入解析意图理解的技术原理&#…...

信号灯和旋钮在接地电阻柜内的作用主要包括以下几个方面

信号灯的作用‌&#xff1a; ‌指示状态‌&#xff1a;信号灯用于指示接地电阻柜的工作状态&#xff0c;如正常运行、故障报警等。通过不同颜色的灯光&#xff08;如红色表示故障&#xff0c;绿色表示正常&#xff09;来提醒操作人员柜子的当前状态&#xff0c;确保及时处理潜…...

MongoDB 应用实战

1. java 原生客户端 引入maven 1 <dependencies> 2 <dependency> 3 <groupId>org.mongodb</groupId> 4 <artifactId>mongodb‐driver‐sync</artifactId> 5 <version>4.1.1</version> 6 </dependency> 7 </depende…...

Java EE初阶——wait 和 notify

1. 线程饥饿 线程饥饿是指一个或多个线程因长期无法获取所需资源&#xff08;如锁&#xff0c;CPU时间等&#xff09;而持续处于等待状态&#xff0c;导致其任务无法推进的现象。 典型场景 优先级抢占&#xff1a; 在支持线程优先级的系统中&#xff0c;高优先级线程可能持续…...

SpringBoot--Bean管理详解

Bean管理 Bean扫描 回顾spring&#xff1a; 在XML配置文件中&#xff0c;可以借助 <context:component-scan base-package "com.lyc"> 或者注解 ComponentScan(basePackages"com.lyc") 再springboot项目中&#xff0c;既没有标签&#xff0c;也…...

python爬虫实战训练

前言&#xff1a;哇&#xff0c;今天终于能访问豆瓣了&#xff0c;前几天爬太多次了&#xff0c;网页都不让我访问了&#xff08;要登录&#xff09;。 先来个小练习试试手吧&#xff01; 爬取豆瓣第一页&#xff08;多页同上篇文章&#xff09;所有电影的排名、电影名称、星…...

探索大型语言模型(LLM)的开源学习路径:mlabonne/llm-course 深度解析

引言:为什么LLM学习需要系统化课程? 近年来,大型语言模型(Large Language Models, LLMs)彻底改变了自然语言处理领域。从GPT系列到Llama、Mistral等开源模型,掌握LLM的开发和应用能力已成为技术人员的核心竞争力。然而,LLM技术栈涵盖从理论基础到工程实践的复杂内容,如…...

IDEA怎么汉化idea中文改回英文版

第一步:点击左上角的File&#xff0c;然后选择Setting 第二步&#xff1a;Setting页面选择 Appearance & Behavior&#xff0c;然后展开System Settings&#xff0c;然后选择 Language and Region&#xff0c;进行修改 我操作的是2024年的版本 File->Settings -> Ap…...

Flutter目录结构介绍、入口、Widget、Center组件、Text组件、MaterialApp组件、Scaffold组件

目录 1. 创建Flutter项目 1.1使用Android Studio创建Flutter项目 1.2 使用命令行创建Flutter项目 2. Flutter项目介绍 2.1所有代码都在lib目录下编写 2.1 pubspec.yaml 依赖库/图片的引用 ​编辑 3. 运行项目 4. 编写mian.dart文件 4.1 使用MaterialApp 和 Scaffold两个组件…...

C++23 中的 ranges::fold_left:范围折叠算法

文章目录 1. **ranges::fold_left 的基本概念**2. **使用示例**示例 1&#xff1a;计算整数范围的和示例 2&#xff1a;计算字符串范围的连接示例 3&#xff1a;使用自定义函数 3. **与其他折叠算法的比较**4. **为什么需要 ranges::fold_left**5. **总结** 随着 C23 的到来&am…...

Vue2项目created不执行

Vue2项目created不执行 设置唯一值 name在 created 调用方法在 watch 中监听路由完整代码示例 设置唯一值 name 在 Vue 组件中&#xff0c;name 属性用于标识组件。确保每个组件的 name 属性是唯一的&#xff0c;这有助于在调试和开发过程中更好地识别组件。 export default …...

mysql的not exists走索引吗

在MySQL中&#xff0c;​NOT EXISTS子句是否使用索引取决于子查询中关联字段是否建立了合适的索引。以下是关键点总结&#xff1a; ​索引的作用​&#xff1a; 当子查询的关联字段&#xff08;例如B.a_id&#xff09;存在索引&#xff08;如普通B-tree索引&#xff09;时&…...

红黑树实现

1.红黑树的概念 红黑树是一棵二叉搜索树&#xff0c;他的每个节点增加一个存储位来表示节点的颜色&#xff0c;可以是红丝或者黑色。通过对任何一条从根到叶子的路径上各个节点的颜色进行约束&#xff0c;红黑树确保没有一条路径会比其他路径长出两倍&#xff0c;因而是接近平…...

将已打包好的aar文件,上传到 Coding 的 Maven 仓库

将已打包好的aar文件&#xff0c;上传到 Coding 的 Maven 仓库。 在android stuio项目的build.gradle 进行上传。 编写代码 plugins {id maven-publish }// 配置要上传的本地 AAR 文件 def aarFile file(D:\\mylibrary-1.0.0.aar)publishing {publications {mavenAar(MavenP…...

海康相机连接测试-极简版

文章目录 1、下载客户端 1、下载客户端 海康机器人官网下载软件 软件下载地址 先下载客户端测试连接 按照你的相机的类型选择客户端 安装完毕后&#xff0c;确保USB线插的是3.0的端口 软件会自动识别相机型号 在上方有播放按钮&#xff0c;可以采集图像信息显示...

深入探索:Core Web Vitals 进阶优化与新兴指标

一、INP&#xff08;Interaction to Next Paint&#xff09;深度解析 INP 与 FID 的核心差异 • 响应范围&#xff1a;FID仅测量首次输入延迟&#xff0c;而INP跟踪页面生命周期中所有关键交互 • 测量维度&#xff1a;INP综合考虑输入延迟、处理时间和下一帧渲染时间 • 评…...

AI与产品架构设计系列(2):Agent系统的应用架构与落地实

什么是AI Agent&#xff1f;其在架构中的独特定位 AI Agent&#xff08;人工智能代理&#xff09;是一种模拟人类智能行为的自主系统&#xff0c;通常以大型语言模型&#xff08;LLM&#xff09;作为核心引擎。简单来说&#xff0c;Agent能够像人一样感知环境信息、规划行动方…...

OpenAI与微软洽谈新融资及IPO,Instagram因TikTok流失四成用户

OpenAI与微软洽谈新融资及IPO 据悉&#xff0c;OpenAI 正与微软洽谈新融资及筹备 IPO&#xff0c;关键问题是微软在 OpenAI 重组后的股权比例。微软已投资超 130 亿美元&#xff0c;双方修订 2019 年合同&#xff0c;微软拟弃部分股权换新技术访问权。OpenAI 上周放弃了有争议转…...

架构篇、第五章_05Jenkins的部署与构建

Linux_架构篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;Jenkins的部署与构建 版本号: 1.0,0 作者: 老王要学习 日期: 2025.05.15 适用环境: Centos7 文档说明 本文档围绕 Jenkins 的部署与构建展开&a…...

`ParameterizedType` 和 `TypeVariable` 的区别

在 Java 的泛型系统中&#xff0c;ParameterizedType 和 TypeVariable 是两个不同的类型表示&#xff0c;它们都属于 java.lang.reflect.Type 接口的子接口。两者都在反射&#xff08;Reflection&#xff09;中用于描述泛型信息&#xff0c;但用途和含义不同。 &#x1f31f; 一…...

HTML 中的 input 标签详解

HTML 中的 input 标签详解 一、基础概念 1. 定义与作用 HTML 中的 <input> 标签是表单元素的核心组件&#xff0c;用于创建各种用户输入字段。作为一个空标签&#xff08;没有闭合标签&#xff09;&#xff0c;它通过 type 属性来决定呈现何种输入控件&#xff0c;是实…...