fxgang opened a new issue, #34286:
URL: https://github.com/apache/shardingsphere/issues/34286

   ## 配置文件
   
spring.datasource.driver-class-name=org.apache.shardingsphere.driver.ShardingSphereDriver
   spring.datasource.url=jdbc:shardingsphere:classpath:sharding.yaml
   
   ##sharding.yaml
   dataSources:
     ds_11:
       driverClassName: com.mysql.cj.jdbc.Driver
       dataSourceClassName: com.zaxxer.hikari.HikariDataSource
       #jdbcUrl: 
jdbc:mysql://10.8.0.1:3381/db_assistant?useUnicode=true&charset=utf8mb4&serverTimezone=UTC&useSSL=false&useOldAliasMetadataBehavior=true
       jdbcUrl: 
jdbc:mysql://10.8.0.1:3381/db_platform?useUnicode=true&charset=utf8mb4&useSSL=false&useOldAliasMetadataBehavior=true
       username: root
       password: qaz@123#PY
     ds_21:
       driverClassName: com.mysql.cj.jdbc.Driver
       dataSourceClassName: com.zaxxer.hikari.HikariDataSource
       jdbcUrl: 
jdbc:mysql://10.8.0.9:3381/db_platform?useUnicode=true&charset=utf8mb4&useSSL=false&useOldAliasMetadataBehavior=true
       username: root
       password: qaz@123#PY
     ds_31:
       driverClassName: com.mysql.cj.jdbc.Driver
       dataSourceClassName: com.zaxxer.hikari.HikariDataSource
       jdbcUrl: 
jdbc:mysql://10.8.0.13:3381/db_platform?useUnicode=true&charset=utf8mb4&useSSL=false&useOldAliasMetadataBehavior=true
       username: root
       password: qaz@123#PY
   rules:
     - !SINGLE
       tables:
         - "*.*"
       defaultDataSource: ds_11
     - !READWRITE_SPLITTING
       dataSources:
         readwrite_ds:
           writeDataSourceName: ds_11
           readDataSourceNames:
             - ds_21
             - ds_31
           transactionalReadQueryStrategy: PRIMARY
           loadBalancerName: random
       loadBalancers:
         random:
           type: RANDOM
   props:
     sql-show: true
   
   ## 启动文件配置
   @EntityScan(basePackages = 
{"com.ks.common.springboot.starter.server.entity"})
   @EnableConfigurationProperties(KsDataSourceProperties.class)
   @SpringBootApplication//(exclude = DataSourceAutoConfiguration.class)
   public class PlatformServiceApplication {
       public static void main(String[] args) {
           SpringApplication.run(PlatformServiceApplication.class, args);
       }
   }
   
   ## 修改为代码方式
   @Component
   public class DataSourceProvider {
       public DataSource getDataSource() throws SQLException {
           ReadwriteSplittingDataSourceRuleConfiguration dataSourceConfig = new 
ReadwriteSplittingDataSourceRuleConfiguration(
                   "demo_read_query_ds", "demo_write_ds", 
Arrays.asList("demo_read_ds_0", "demo_read_ds_1"), "demo_weight_lb");
           Properties algorithmProps = new Properties();
           algorithmProps.setProperty("demo_read_ds_0", "2");
           algorithmProps.setProperty("demo_read_ds_1", "1");
           Map<String, AlgorithmConfiguration> algorithmConfigMap = new 
HashMap<>();
           algorithmConfigMap.put("demo_weight_lb", new 
AlgorithmConfiguration("WEIGHT", algorithmProps));
           ReadwriteSplittingRuleConfiguration ruleConfig = new 
ReadwriteSplittingRuleConfiguration(Collections.singleton(dataSourceConfig), 
algorithmConfigMap);
           Properties props = new Properties();
           props.setProperty("sql-show", Boolean.TRUE.toString());
           return 
ShardingSphereDataSourceFactory.createDataSource(createDataSourceMap(), 
Collections.singleton(ruleConfig), props);
       }
       private Map<String, DataSource> createDataSourceMap() {
           DataSource masterDataSource = 
DataSourceBuilder.create().url("jdbc:mysql://10.8.0.1:3381/db_platform").username("root").password("qaz@123#PY").build();
           DataSource slaveDataSource1 = 
DataSourceBuilder.create().url("jdbc:mysql://10.8.0.9:3381/db_platform").username("root").password("qaz@123#PY").build();
           DataSource slaveDataSource2 = 
DataSourceBuilder.create().url("jdbc:mysql://10.8.0.13:3381/db_platform").username("root").password("qaz@123#PY").build();
   
           Map<String, DataSource> result = new HashMap<>();
           result.put("demo_write_ds", masterDataSource);
           result.put("demo_read_ds_0", slaveDataSource1);
           result.put("demo_read_ds_1", slaveDataSource2);
           return result;
       }
   }
   @Configuration
   public class ShardingSphereConfig {
       private static final Logger logger = 
LoggerFactory.getLogger(ShardingSphereConfig.class);
   
       @Resource
       private DataSourceProvider dataSourceProvider;
   
       @Bean
       public DataSource masterSlaveDataSource() throws SQLException {
           logger.info("初始化Sharding数据源... ...");
           return dataSourceProvider.getDataSource();
       }
   }
   
   ## 同时修改启动文件
   @EntityScan(basePackages = 
{"com.ks.common.springboot.starter.server.entity"})
   @EnableConfigurationProperties(KsDataSourceProperties.class)
   @SpringBootApplication(exclude = DataSourceAutoConfiguration.class)
   public class PlatformServiceApplication {
       public static void main(String[] args) {
           SpringApplication.run(PlatformServiceApplication.class, args);
       }
   }
   
   ## 测试报错
   2025-01-08 23:32:28 DEBUG [main] org.hibernate.SQL select 
t1_0.id,t1_0.create_time,t1_0.create_user,t1_0.db,t1_0.driver_class_name,t1_0.`host`,t1_0.`key`,t1_0.`password`,t1_0.`port`,t1_0.`role`,t1_0.service,t1_0.state,t1_0.type,t1_0.update_time,t1_0.update_user,t1_0.`user`,t1_0.version
 from t_server t1_0 where t1_0.id=?
   
   
org.apache.shardingsphere.infra.exception.kernel.metadata.TableNotFoundException:
 Table or view 't_server' does not exist.
   
        at 
org.apache.shardingsphere.infra.binder.segment.from.impl.SimpleTableSegmentBinder.lambda$checkTableExists$4(SimpleTableSegmentBinder.java:151)
        at 
org.apache.shardingsphere.infra.exception.core.ShardingSpherePreconditions.checkState(ShardingSpherePreconditions.java:41)
        at 
org.apache.shardingsphere.infra.binder.segment.from.impl.SimpleTableSegmentBinder.checkTableExists(SimpleTableSegmentBinder.java:148)
        at 
org.apache.shardingsphere.infra.binder.segment.from.impl.SimpleTableSegmentBinder.bind(SimpleTableSegmentBinder.java:84)
        at 
org.apache.shardingsphere.infra.binder.segment.from.TableSegmentBinder.bind(TableSegmentBinder.java:55)
        at 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementBinder.lambda$bind$1(SelectStatementBinder.java:60)
        at java.base/java.util.Optional.map(Optional.java:260)
        at 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementBinder.bind(SelectStatementBinder.java:60)
        at 
org.apache.shardingsphere.infra.binder.statement.dml.SelectStatementBinder.bind(SelectStatementBinder.java:48)
        at 
org.apache.shardingsphere.infra.binder.engine.SQLBindEngine.bindDMLStatement(SQLBindEngine.java:82)
        at 
org.apache.shardingsphere.infra.binder.engine.SQLBindEngine.bind(SQLBindEngine.java:72)
        at 
org.apache.shardingsphere.infra.binder.engine.SQLBindEngine.bind(SQLBindEngine.java:63)
        at 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:207)
        at 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:176)
        at 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection.prepareStatement(ShardingSphereConnection.java:99)
        at 
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$4.doPrepare(StatementPreparerImpl.java:151)
        at 
org.hibernate.engine.jdbc.internal.StatementPreparerImpl$StatementPreparationTemplate.prepareStatement(StatementPreparerImpl.java:180)
        at 
org.hibernate.engine.jdbc.internal.StatementPreparerImpl.prepareQueryStatement(StatementPreparerImpl.java:153)
        at 
org.hibernate.sql.exec.internal.StandardStatementCreator.createStatement(StandardStatementCreator.java:49)
        at 
org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.executeQuery(DeferredResultSetAccess.java:235)
        at 
org.hibernate.sql.results.jdbc.internal.DeferredResultSetAccess.getResultSet(DeferredResultSetAccess.java:171)
        at 
org.hibernate.sql.results.jdbc.internal.JdbcValuesResultSetImpl.<init>(JdbcValuesResultSetImpl.java:74)
        at 
org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.resolveJdbcValuesSource(JdbcSelectExecutorStandardImpl.java:355)
        at 
org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.doExecuteQuery(JdbcSelectExecutorStandardImpl.java:137)
        at 
org.hibernate.sql.exec.internal.JdbcSelectExecutorStandardImpl.executeQuery(JdbcSelectExecutorStandardImpl.java:102)
        at 
org.hibernate.sql.exec.spi.JdbcSelectExecutor.executeQuery(JdbcSelectExecutor.java:91)
        at 
org.hibernate.sql.exec.spi.JdbcSelectExecutor.list(JdbcSelectExecutor.java:165)
        at 
org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:145)
        at 
org.hibernate.loader.ast.internal.SingleIdLoadPlan.load(SingleIdLoadPlan.java:117)
        at 
org.hibernate.loader.ast.internal.SingleIdEntityLoaderStandardImpl.load(SingleIdEntityLoaderStandardImpl.java:74)
        at 
org.hibernate.persister.entity.AbstractEntityPersister.doLoad(AbstractEntityPersister.java:3895)
        at 
org.hibernate.persister.entity.AbstractEntityPersister.load(AbstractEntityPersister.java:3884)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.loadFromDatasource(DefaultLoadEventListener.java:604)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.loadFromCacheOrDatasource(DefaultLoadEventListener.java:590)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:560)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.doLoad(DefaultLoadEventListener.java:544)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.load(DefaultLoadEventListener.java:206)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.loadWithRegularProxy(DefaultLoadEventListener.java:289)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:241)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.doOnLoad(DefaultLoadEventListener.java:110)
        at 
org.hibernate.event.internal.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:69)
        at 
org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:138)
        at 
org.hibernate.internal.SessionImpl.fireLoadNoChecks(SessionImpl.java:1229)
        at org.hibernate.internal.SessionImpl.fireLoad(SessionImpl.java:1217)
        at 
org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:210)
        at 
org.hibernate.loader.internal.IdentifierLoadAccessImpl.doLoad(IdentifierLoadAccessImpl.java:161)
        at 
org.hibernate.loader.internal.IdentifierLoadAccessImpl.lambda$load$1(IdentifierLoadAccessImpl.java:150)
        at 
org.hibernate.loader.internal.IdentifierLoadAccessImpl.perform(IdentifierLoadAccessImpl.java:113)
        at 
org.hibernate.loader.internal.IdentifierLoadAccessImpl.load(IdentifierLoadAccessImpl.java:150)
        at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2459)
        at org.hibernate.internal.SessionImpl.find(SessionImpl.java:2430)
        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.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:320)
        at jdk.proxy2/jdk.proxy2.$Proxy165.find(Unknown Source)
        at 
org.springframework.data.jpa.repository.support.SimpleJpaRepository.findById(SimpleJpaRepository.java:323)
        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:359)
        at 
org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryFragmentMethodInvoker.lambda$new$0(RepositoryMethodInvoker.java:277)
        at 
org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:170)
        at 
org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:158)
        at 
org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:515)
        at 
org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:284)
        at 
org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:752)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at 
org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:174)
        at 
org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:149)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at 
org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:69)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at 
org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:380)
        at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at 
org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:138)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at 
org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:165)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at 
org.springframework.data.repository.core.support.MethodInvocationValidator.invoke(MethodInvocationValidator.java:96)
        at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
        at 
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
        at jdk.proxy2/jdk.proxy2.$Proxy171.findById(Unknown Source)
        at 
com.ks.platformservice.PlatformServiceApplicationTests.getServerList(PlatformServiceApplicationTests.java:63)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
        at java.base/java.util.ArrayList.forEach(ArrayList.java:1597)
   
   
   


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

Reply via email to