yyTraveler opened a new issue, #33368:
URL: https://github.com/apache/shardingsphere/issues/33368
## Question
i try to use the java api to config the sharding-jdbc 5.5.0
even if i have already config the SingleRuleConfiguration class, when doing
the select query, the target table still turns out to be **Table or view
'lcz_speech' does not exist.**
here are some tips:
1. i see the basicDataSource has been loaded (not null) when debugging , you
can see its xml config below.
2. the spring service can be started up successfully and all other tables
can do select queries regularly except the lcz_speech table meet this problem.
i have tried to rename the table in mysql as lcz_speech_bak, but still doesn't
work.
3. till now, i haven't seen actual data node tables appeared in mysql, such
lcz_speech_202402
the stacktrace
```shell
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException:
Table or view 'lcz_speech' does not exist.
at
org.apache.shardingsphere.infra.binder.segment.from.impl.SimpleTableSegmentBinder.lambda$checkTableExists$4(SimpleTableSegmentBinder.java:151)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions.checkState(ShardingSpherePreconditions.java:41)
~[shardingsphere-infra-exception-core-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.segment.from.impl.SimpleTableSegmentBinder.checkTableExists(SimpleTableSegmentBinder.java:148)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.segment.from.impl.SimpleTableSegmentBinder.bind(SimpleTableSegmentBinder.java:84)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.segment.from.TableSegmentBinder.bind(TableSegmentBinder.java:55)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementBinder.lambda$bind$1(SelectStatementBinder.java:60)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at java.util.Optional.map(Optional.java:215) ~[na:1.8.0_131]
at
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementBinder.bind(SelectStatementBinder.java:60)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementBinder.bind(SelectStatementBinder.java:48)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.engine.SQLBindEngine.bindDMLStatement(SQLBindEngine.java:82)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.engine.SQLBindEngine.bind(SQLBindEngine.java:72)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.infra.binder.engine.SQLBindEngine.bind(SQLBindEngine.java:63)
~[shardingsphere-infra-binder-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:207)
~[shardingsphere-jdbc-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:172)
~[shardingsphere-jdbc-5.5.0.jar:5.5.0]
at
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection.prepareStatement(ShardingSphereConnection.java:94)
~[shardingsphere-jdbc-5.5.0.jar:5.5.0]
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$5.doPrepare(StatementPreparerImpl.java:162)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:186)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at
org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:160)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1885)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1862)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1839)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.doQuery(Loader.java:910)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at
org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2554)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.doList(Loader.java:2540)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.Loader.list(Loader.java:2365)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:353)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at
org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1909)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at
org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:311)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:141)
~[hibernate-core-4.3.11.Final.jar:4.3.11.Final]
at
com.xuelang.scrapy.service.common.strategy.dao.SpeechDao.pageSpeechByStrategy(SpeechDao.java:187)
~[scrapy.service-1.0.0-SNAPSHOT.jar:na]
at
com.xuelang.scrapy.service.common.strategy.service.SpeechServiceImpl.pageSpeechByStrategy(SpeechServiceImpl.java:121)
~[scrapy.service-1.0.0-SNAPSHOT.jar:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[na:1.8.0_131]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[na:1.8.0_131]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[na:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
~[spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
~[spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
~[spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
~[spring-tx-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
~[spring-tx-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
~[spring-tx-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
~[spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
~[spring-aop-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at com.sun.proxy.$Proxy98.pageSpeechByStrategy(Unknown Source) ~[na:na]
at
com.xuelang.scrapy.web.controller.v1.scrapy.SpeechController.pageSpeechByStrategy(SpeechController.java:77)
~[classes/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
~[na:1.8.0_131]
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
~[na:1.8.0_131]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[na:1.8.0_131]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_131]
at
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
~[spring-web-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
~[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
~[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
~[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
~[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
~[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
~[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:682)
[servlet-api.jar:na]
at
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
[spring-webmvc-4.3.9.RELEASE.jar:4.3.9.RELEASE]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:765)
[servlet-api.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
[catalina.jar:8.5.85]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[catalina.jar:8.5.85]
at
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
[tomcat-websocket.jar:8.5.85]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
[catalina.jar:8.5.85]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[catalina.jar:8.5.85]
at
com.github.xiaoymin.knife4j.spring.filter.SecurityBasicAuthFilter.doFilter(SecurityBasicAuthFilter.java:90)
[knife4j-spring-2.0.5.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
[catalina.jar:8.5.85]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[catalina.jar:8.5.85]
at com.xuelang.scrapy.common.xss.XssFilter.doFilter(XssFilter.java:61)
[scrapy.common-1.0.0-SNAPSHOT.jar:na]
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
[catalina.jar:8.5.85]
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
[catalina.jar:8.5.85]
```
the config class i use
```java
@Configuration
public class ShardingConfiguration {
private static final String DATA_SOURCE_NAME = "basicDataSource";
@Resource(name = "basicDataSource")
private DataSource dataSource;
@Bean("shardingDataSource")
public DataSource getShardingSphereDataSource() throws SQLException {
ModeConfiguration modeConfiguration = new
ModeConfiguration("Standalone", new
StandalonePersistRepositoryConfiguration("JDBC", new Properties()));
Map<String, DataSource> dataSourceMap = new HashMap<>();
dataSourceMap.put(DATA_SOURCE_NAME, dataSource);
Collection<RuleConfiguration> ruleConfigs = Arrays.asList(
createSingleRuleConfiguration(),
createShardingRuleConfiguration()
);
Properties props = new Properties();
props.setProperty("sql.show", "true");
DataSource dataSource =
ShardingSphereDataSourceFactory.createDataSource(DATA_SOURCE_NAME,
modeConfiguration, dataSourceMap, ruleConfigs, props);
return dataSource;
}
private SingleRuleConfiguration createSingleRuleConfiguration() {
SingleRuleConfiguration singleRuleConfiguration = new
SingleRuleConfiguration();
singleRuleConfiguration.setTables(Collections.singletonList(
DATA_SOURCE_NAME + ".*"));
return singleRuleConfiguration;
}
private ShardingRuleConfiguration createShardingRuleConfiguration() {
ShardingRuleConfiguration result = new ShardingRuleConfiguration();
result.getTables().add(getLczSpeechTableRuleConfiguration());
result.getBindingTableGroups().add(new
ShardingTableReferenceRuleConfiguration("sharding_mapping_rules",
"lcz_speech"));
result.setDefaultTableShardingStrategy(new
StandardShardingStrategyConfiguration("create_time",
"standard-time-range-configuration"));
Properties props = new Properties();
props.setProperty("datetime-pattern", "yyyy-MM-dd HH:mm:ss");
props.setProperty("datetime-lower", "2023-01-01 00:00:00");
props.setProperty("datetime-upper", "2026-12-01 00:00:00");
props.setProperty("sharding-suffix-pattern","yyyyMM");
props.setProperty("datetime-interval-amount", "1");
props.setProperty("datetime-interval-unit", "MONTHS");
// new AlgorithmConfiguration(type_str, Properties);
result.getShardingAlgorithms().put("standard-time-range-configuration", new
AlgorithmConfiguration("INTERVAL", props));
return result;
}
private ShardingTableRuleConfiguration
getLczSpeechTableRuleConfiguration() {
ShardingTableRuleConfiguration result = new
ShardingTableRuleConfiguration("lcz_speech", DATA_SOURCE_NAME +
".lcz_speech_${202301..202612}");
result.setTableShardingStrategy(new
StandardShardingStrategyConfiguration("create_time",
"standard-time-range-configuration"));
return result;
}
}
```
the basicDataSource calss
```xml
<bean id="basicDataSource"
class="org.apache.commons.dbcp2.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.className}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="defaultAutoCommit" value="${jdbc.autoCommit}" />
<property name="maxTotal"
value="${jdbc.maximum.connection.count}" />
<property name="minIdle"
value="${jdbc.minimum.connection.count}"></property>
</bean>
```
--
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]