Iceberry-qdd opened a new issue, #35147: URL: https://github.com/apache/shardingsphere/issues/35147
## Question **For English only**, other languages will not accept. Before asking a question, make sure you have: - Googled your question. - Searched open and closed [GitHub issues](https://github.com/apache/shardingsphere/issues). - Read documentation: [ShardingSphere Doc](https://shardingsphere.apache.org/document/current/en/overview). Please pay attention on issues you submitted, because we maybe need more details. If no response anymore and we cannot reproduce it on current information, we will **close it**. ---- ### Version ```xml <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardingsphere-jdbc</artifactId> <version>5.5.2</version> </dependency> ``` ### My needs 1. `ds_0` is write node, `ds_1` and `ds_2` are read nodes; 2. On every ds, using `autoTables` rule, each `tb_product` table stores 1 month of data, based on the rule below, it'll create `tb_product_0` ~ `tb_product_12` automatically; 3. `SELECT` sqls go to `ds_1` or `ds_2` node; `update`, `delete`, `insert` sqls goto `ds_0` node. ### My config ```yml # Shardingsphere.yml mode: type: Standalone repository: type: JDBC dataSources: ds_0: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://localhost:3306/iceberry?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8 username: iceberry password: iceberry ds_1: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://localhost:3307/iceberry?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8 username: iceberry password: iceberry ds_2: dataSourceClassName: com.zaxxer.hikari.HikariDataSource driverClassName: com.mysql.cj.jdbc.Driver jdbcUrl: jdbc:mysql://localhost:3308/iceberry?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8 username: iceberry password: iceberry rules: - !READWRITE_SPLITTING dataSourceGroups: rw_ds: writeDataSourceName: ds_0 readDataSourceNames: - ds_1 - ds_2 transactionalReadQueryStrategy: PRIMARY loadBalancerName: random loadBalancers: random: type: RANDOM - !SHARDING autoTables: tb_product: actualDataSources: rw_ds shardingStrategy: standard: shardingColumn: created_time shardingAlgorithmName: auto_table_interval keyGenerateStrategy: column: id keyGeneratorName: snowflake auditStrategy: auditorNames: - sharding_key_required_auditor allowHintDisable: true shardingAlgorithms: auto_table_interval: type: AUTO_INTERVAL props: datetime-lower: "2025-04-08 00:00:00" datetime-upper: "2026-04-08 00:00:00" sharding-seconds: 2678400 auditors: sharding_key_required_auditor: type: DML_SHARDING_CONDITIONS keyGenerators: snowflake: type: SNOWFLAKE props: sql-show: true ``` ### My Code ```java @MybatisTest @AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE) public class ProductMapperTests { @Autowired private JdbcTemplate jdbcTemplate; @Test @Transactional(propagation = Propagation.NOT_SUPPORTED) void test_create_product_table() { String sql = """ CREATE TABLE tb_product ( id BIGINT NOT NULL PRIMARY KEY, created_time DATETIME NOT NULL, is_ordered TINYINT(1) DEFAULT 0 NOT NULL, name VARCHAR(64) NULL ); """; jdbcTemplate.execute(sql); } } ``` ### My Error <details> <summary>The error is following (Click to expand):</summary> ``` bash Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 2025-04-09T16:01:45.513+08:00 INFO 36324 --- [ShardingSphereDemo] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting... 2025-04-09T16:01:46.070+08:00 INFO 36324 --- [ShardingSphereDemo] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Starting... 2025-04-09T16:01:46.333+08:00 INFO 36324 --- [ShardingSphereDemo] [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-2 - Added connection conn0: url=jdbc:h2:mem:config user=SA 2025-04-09T16:01:46.336+08:00 INFO 36324 --- [ShardingSphereDemo] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-2 - Start completed. 2025-04-09T16:01:46.408+08:00 INFO 36324 --- [ShardingSphereDemo] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-3 - Starting... 2025-04-09T16:01:46.620+08:00 INFO 36324 --- [ShardingSphereDemo] [ main] com.zaxxer.hikari.pool.HikariPool : HikariPool-3 - Added connection com.mysql.cj.jdbc.ConnectionImpl@cfb94fd 2025-04-09T16:01:46.620+08:00 INFO 36324 --- [ShardingSphereDemo] [ main] com.zaxxer.hikari.HikariDataSource : HikariPool-3 - Start completed. com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Can not find data source in sharding rule, invalid actual data node 'rw_ds.tb_product_0'. at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:584) at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:571) at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:98) at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:111) at org.springframework.jdbc.datasource.DataSourceUtils.fetchConnection(DataSourceUtils.java:160) at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:118) at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:388) at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:421) at com.iceberry.ShardingSphereDemo.ProductMapperTests.test_create_product_table(ProductMapperTests.java:40) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) Caused by: org.apache.shardingsphere.sharding.exception.metadata.DataNodeGenerateException: Can not find data source in sharding rule, invalid actual data node 'rw_ds.tb_product_0'. at org.apache.shardingsphere.sharding.rule.ShardingTable.generateDataNodes(ShardingTable.java:193) at org.apache.shardingsphere.sharding.rule.ShardingTable.<init>(ShardingTable.java:128) at org.apache.shardingsphere.sharding.rule.ShardingRule.createShardingAutoTable(ShardingRule.java:211) at org.apache.shardingsphere.sharding.rule.ShardingRule.lambda$createShardingAutoTables$16(ShardingRule.java:204) at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197) at java.base/java.util.LinkedList$LLSpliterator.forEachRemaining(LinkedList.java:1242) at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509) at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921) at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682) at org.apache.shardingsphere.sharding.rule.ShardingRule.createShardingAutoTables(ShardingRule.java:205) at org.apache.shardingsphere.sharding.rule.ShardingRule.<init>(ShardingRule.java:127) at org.apache.shardingsphere.sharding.rule.builder.ShardingRuleBuilder.build(ShardingRuleBuilder.java:42) at org.apache.shardingsphere.sharding.rule.builder.ShardingRuleBuilder.build(ShardingRuleBuilder.java:36) at org.apache.shardingsphere.infra.rule.builder.database.DatabaseRulesBuilder.build(DatabaseRulesBuilder.java:69) at org.apache.shardingsphere.infra.metadata.database.ShardingSphereDatabase.create(ShardingSphereDatabase.java:104) at org.apache.shardingsphere.mode.metadata.factory.ExternalMetaDataFactory.createGenericDatabases(ExternalMetaDataFactory.java:83) at org.apache.shardingsphere.mode.metadata.factory.ExternalMetaDataFactory.create(ExternalMetaDataFactory.java:71) at org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory.createByLocal(MetaDataContextsFactory.java:83) at org.apache.shardingsphere.mode.metadata.MetaDataContextsFactory.create(MetaDataContextsFactory.java:72) at org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder.build(StandaloneContextManagerBuilder.java:51) at org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource.createContextManager(ShardingSphereDataSource.java:74) at org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource.<init>(ShardingSphereDataSource.java:63) at org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory.createDataSource(ShardingSphereDataSourceFactory.java:95) at org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFactory.createDataSource(YamlShardingSphereDataSourceFactory.java:136) at org.apache.shardingsphere.driver.api.yaml.YamlShardingSphereDataSourceFactory.createDataSource(YamlShardingSphereDataSourceFactory.java:71) at org.apache.shardingsphere.driver.jdbc.core.driver.DriverDataSourceCache.createDataSource(DriverDataSourceCache.java:57) at org.apache.shardingsphere.driver.jdbc.core.driver.DriverDataSourceCache.lambda$get$0(DriverDataSourceCache.java:50) at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) at org.apache.shardingsphere.driver.jdbc.core.driver.DriverDataSourceCache.get(DriverDataSourceCache.java:50) at org.apache.shardingsphere.driver.ShardingSphereDriver.connect(ShardingSphereDriver.java:57) at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:120) at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:360) at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:202) at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:461) at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:550) ... 11 more ``` </details> -- 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: notifications-unsubscr...@shardingsphere.apache.org.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org