silence1005 opened a new issue, #28230:
URL: https://github.com/apache/shardingsphere/issues/28230
```java
@Component
public class ShardingSS {
@Value("${batch.datasource.url}")
private String jdbcUrl;
@Value("${batch.datasource.username}")
private String username;
@Value("${batch.datasource.password}")
private String password;
@Bean
public DataSource dataSource() throws SQLException {
HikariDataSource dataSource1 = new HikariDataSource();
dataSource1.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource1.setJdbcUrl(jdbcUrl);
dataSource1.setUsername(username);
dataSource1.setPassword(password);
//数据源配置
dataSource1.setConnectionTimeout(10000);
dataSource1.setIdleTimeout(1000000);
dataSource1.setMaxLifetime(1800000);
dataSource1.setMaximumPoolSize(50);
dataSource1.setMinimumIdle(50);
Map<String, DataSource> map = new HashMap<>();
StandardShardingStrategyConfiguration strategyConfiguration = new
StandardShardingStrategyConfiguration("BUSINESS_TIME", "alg-datetime-interval");
map.put("ds",dataSource1);
ShardingRuleConfiguration ruleConfiguration = new
ShardingRuleConfiguration();
ShardingTableRuleConfiguration erp_data = new
ShardingTableRuleConfiguration("erp_data","ds.erp_data_$->{202301..202312}");
erp_data.setTableShardingStrategy(strategyConfiguration);
ShardingTableRuleConfiguration yb_trans_detail = new
ShardingTableRuleConfiguration("yb_trans_detail","ds.yb_trans_detail_$->{202301..202312}");
ShardingTableRuleConfiguration yb_trans_record = new
ShardingTableRuleConfiguration("yb_trans_record","ds.yb_trans_record_$->{202301..202312}");
ShardingTableRuleConfiguration erp_detail_raw_data = new
ShardingTableRuleConfiguration("erp_detail_raw_data","ds.erp_detail_raw_data_$->{202301..202312}");
ShardingTableRuleConfiguration erp_raw_data = new
ShardingTableRuleConfiguration("erp_raw_data","ds.erp_raw_data_$->{202301..202312}");
ruleConfiguration.getTables().add(erp_data);
ruleConfiguration.getTables().add(yb_trans_detail);
ruleConfiguration.getTables().add(yb_trans_record);
ruleConfiguration.getTables().add(erp_detail_raw_data);
ruleConfiguration.getTables().add(erp_raw_data);
erp_data.setTableShardingStrategy(strategyConfiguration);
ruleConfiguration.setDefaultDatabaseShardingStrategy(strategyConfiguration);
Properties algorithmProperties = new Properties();
algorithmProperties.put("datetime-lower", "2023-01");
algorithmProperties.put("datetime-upper", "2222-12");
algorithmProperties.put("datetime-pattern", "yyyy-MM");
algorithmProperties.put("sharding-suffix-pattern", "yyyyMM");
algorithmProperties.put("datetime-interval-unit", "MONTHS");
IntervalShardingAlgorithm intervalShardingAlgorithm = new
IntervalShardingAlgorithm();
intervalShardingAlgorithm.init(algorithmProperties);
AlgorithmConfiguration interval = new
AlgorithmConfiguration("INTERVAL", algorithmProperties);
ruleConfiguration.getShardingAlgorithms().put("alg-datetime-interval",interval);
Properties shardingProperties = new Properties();
shardingProperties.put("sql-show","true");
return ShardingSphereDataSourceFactory.createDataSource(dataSource1,
Collections.singleton(ruleConfiguration), shardingProperties);
}
}
when i execute
(select * WHERE 1 = 1 and e.BUSINESS_TIME >= ? and e.BUSINESS_TIME <= ?
ORDER BY e.business_Time desc LIMIT ?)
An error will be reported: ### Cause: java.sql.SQLException: No sharding
database route info.
SQL queries using sub-tables will report errors, but it is normal to perform
SQL queries without using sub-tables
Is there a problem with the above configuration? I just want to implement
sharding through java code, not yaml
My version is 5.3.2, here is the complete error message:
```java
==> Preparing: select e.ID, e.CREATE_BY, e.CREATE_DATE, e.LAST_MODIFIED_BY,
e.LAST_MODIFIED_DATE, e.JGID, e.YWLX, e.DJH, e.SPID, e.SL, e.KC, e.DJ, e.YBKH,
e.SCPH, e.PHYXQ, e.YWSJ, e.CZY, e.YS, e.PSDH, e.FPH, e.BZ, e.CJSJ, e.tx_hash,
e.data_hash, e.hh, e.ybje, e.zfje, e.spzj, e.spdj, e.zglsj, e.qx_code,
e.qx_name, e.data_Year_Month, e.ERP_RAW_DATA_ID, e.BUSINESS_TIME , goods.SPMC,
goods.SPBM, goods.SPGG, goods.DW, goods.DZJGM FROM erp_data e left join goods
ON e.SPID = goods.ID WHERE 1 = 1 and e.BUSINESS_TIME >= ? and e.BUSINESS_TIME
<= ? ORDER BY e.business_Time desc LIMIT ?
==> Parameters: 2023-08-01 00:00:00.0(Timestamp), 2023-08-31
00:00:00.0(Timestamp), 50(Integer)
Releasing transactional SqlSession
[org.apache.ibatis.session.defaults.DefaultSqlSession@5e31ee54]
Transaction synchronization deregistering SqlSession
[org.apache.ibatis.session.defaults.DefaultSqlSession@5e31ee54]
Transaction synchronization closing SqlSession
[org.apache.ibatis.session.defaults.DefaultSqlSession@5e31ee54]
2023-08-23 14:25:04.107 [http-nio-8091-exec-1] ERROR
o.a.c.c.C.[.[.[/mcs-supn].[dispatcherServlet] - Servlet.service() for servlet
[dispatcherServlet] in context with path [/mcs-supn] threw exception [Request
processing failed; nested exception is
org.springframework.dao.DataIntegrityViolationException:
### Error querying database. Cause: java.sql.SQLException: No sharding
database route info.
### The error may exist in file
[C:\yongyou\mcs-supn-sh\mcs-supn-db\target\classes\mappings\mysql\biz\ErpDataMapper.xml]
### The error may involve defaultParameterMap
### The error occurred while setting parameters
### SQL: select e.ID, e.CREATE_BY, e.CREATE_DATE,
e.LAST_MODIFIED_BY, e.LAST_MODIFIED_DATE, e.JGID,
e.YWLX, e.DJH, e.SPID, e.SL, e.KC,
e.DJ, e.YBKH, e.SCPH, e.PHYXQ, e.YWSJ,
e.CZY, e.YS, e.PSDH, e.FPH, e.BZ,
e.CJSJ, e.tx_hash, e.data_hash, e.hh, e.ybje,
e.zfje, e.spzj, e.spdj, e.zglsj,
e.qx_code, e.qx_name, e.data_Year_Month,
e.ERP_RAW_DATA_ID, e.BUSINESS_TIME , goods.SPMC,
goods.SPBM, goods.SPGG, goods.DW, goods.DZJGM
FROM erp_data e left join goods ON e.SPID = goods.ID
WHERE 1 = 1 and e.BUSINESS_TIME >= ? and
e.BUSINESS_TIME <= ? ORDER BY e.business_Time desc LIMIT ?
### Cause: java.sql.SQLException: No sharding database route info.
; No sharding database route info.; nested exception is
java.sql.SQLException: No sharding database route info.] with root cause
java.sql.SQLException: No sharding database route info.
at
org.apache.shardingsphere.infra.util.exception.external.sql.ShardingSphereSQLException.toSQLException(ShardingSphereSQLException.java:62)
at
org.apache.shardingsphere.dialect.SQLExceptionTransformEngine.toSQLException(SQLExceptionTransformEngine.java:51)
at
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.execute(ShardingSpherePreparedStatement.java:448)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
at com.sun.proxy.$Proxy244.execute(Unknown Source)
at
org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:64)
at
org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at
org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at
org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at
org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:109)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63)
at com.sun.proxy.$Proxy243.query(Unknown Source)
at
com.github.pagehelper.PageInterceptor.intercept(PageInterceptor.java:136)
at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61)
at com.sun.proxy.$Proxy243.query(Unknown Source)
at
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147)
at
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
at com.sun.proxy.$Proxy179.selectList(Unknown Source)
at
org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:230)
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.invoke(MapperProxy.java:58)
at com.sun.proxy.$Proxy202.queryList(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205)
at com.sun.proxy.$Proxy203.queryList(Unknown Source)
at
com.ufgov.yonyou.service.impl.ErpDataServiceImpl.queryList(ErpDataServiceImpl.java:150)
at
com.ufgov.yonyou.service.impl.ErpDataServiceImpl$$FastClassBySpringCGLIB$$d86bd414.invoke(<generated>)
at
org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:769)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:366)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:99)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
at
com.ufgov.yonyou.service.impl.ErpDataServiceImpl$$EnhancerBySpringCGLIB$$94e66095.queryList(<generated>)
at
com.ufgov.yonyou.controller.ErpDataController.queryList(ErpDataController.java:48)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:190)
at
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138)
at
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106)
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:879)
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:793)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:772)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at
org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:88)
at
io.github.resilience4j.decorators.Decorators$DecorateCheckedSupplier.get(Decorators.java:426)
at
com.huaweicloud.governance.GovernanceRequestMappingHandlerAdapter.aroundInvoke(GovernanceRequestMappingHandlerAdapter.java:87)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:644)
at
org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:633)
at
org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:70)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at
org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:95)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at
org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:747)
at
org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689)
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter$$EnhancerBySpringCGLIB$$516f429b.handleInternal(<generated>)
at
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1040)
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
com.ufgov.yonyou.common.filter.UserTokenFilter.doFilter(UserTokenFilter.java:77)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:109)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:367)
at
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1639)
at
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail:
[email protected]
For queries about this service, please contact Infrastructure at:
[email protected]