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

   I have some problem with shadingsphere yaml config. I followed the official 
documentation and adopted camel case naming.But it seems that the underline is 
correct.
   offical document 
url:https://shardingsphere.apache.org/document/5.2.1/en/user-manual/shardingsphere-jdbc/yaml-config/rules/sharding/
   
   I use shadingsphere version 5.2.1 in my  SpringBoot2 project.
   
   its dependence:
   ```xml
               <!-- sharding-jdbc  -->
               <dependency>
                   <groupId>org.apache.shardingsphere</groupId>
                   
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
                   <version>${sharding-jdbc.version}</version>
               </dependency>
   
   <sharding-jdbc.version>5.2.1</sharding-jdbc.version>
   ```
   its config:
   ```yaml
   spring:
     servlet:
       multipart:
         enabled: true
         max-file-size: 1024MB
         max-request-size: 1024MB
     elasticsearch:
       rest:
         uris: 
     shardingsphere:
       # 模式
       mode:
         type: Standalone # 单机模式
         repository:
           type: JDBC
       dataSources:
         ds_0:
           dataSourceClassName: com.zaxxer.hikari.HikariDataSource
           driverClassName: com.mysql.cj.jdbc.Driver
           jdbcUrl: 
           username: 
           password: 
           hikari:
             maximum-pool-size: 20
             minimum-idle: 5
       # 规则配置
       rules:
         # 数据分片配置
         tables:
           # 逻辑表名
           t_game_assets_record: # 数据源名 + 名表
             actualDataNodes: ds_0.t_game_assets_record_$->{0..3}
             # 分库策略(默认)
             # 分表策略
             tableStrategy:
               standard: # 标准单片分键
                 shardingColumn: game_identity  # 分键列
                 shardingAlgorithmName: game_asset_sharding_by_game_identity # 
分片算法
             keyGenerateStrategy:
               column: id
               keyGeneratorName: snowflake
         # 分片算法配置
         shardingAlgorithms:
           game_asset_sharding_by_game_identity:
             type: HASH_MOD #分片算法类型: 哈希
             props: # 分片算法属性配置
               # 内联表达式:使用 game_identity 取模 8
               sharding-count: 4
         keyGenerators:
           snowflake:
             type: SNOWFLAKE
       # 属性配置
       props:
         sql-show: false
         # sql-simple: true
   ```
   its Error:
   ```
   org.mybatis.spring.MyBatisSystemException: nested exception is 
org.apache.ibatis.executor.ExecutorException: Error preparing statement.  
Cause: java.lang.NullPointerException
   
        at 
org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
        at 
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
        at com.sun.proxy.$Proxy210.insert(Unknown Source)
        at 
org.mybatis.spring.SqlSessionTemplate.insert(SqlSessionTemplate.java:272)
        at 
com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:59)
        at 
com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148)
        at 
com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89)
        at com.sun.proxy.$Proxy230.insertGameReview(Unknown Source)
        at 
com.metaverse.game.release.service.game.GameTaskService.addTask(GameTaskService.java:34)
        at 
com.metaverse.game.release.infra.dao.ShardingSphereTest.testGameVersionsBatchInsert(ShardingSphereTest.java:106)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.springframework.test.context.junit4.statements.RunBeforeTestExecutionCallbacks.evaluate(RunBeforeTestExecutionCallbacks.java:74)
        at 
org.springframework.test.context.junit4.statements.RunAfterTestExecutionCallbacks.evaluate(RunAfterTestExecutionCallbacks.java:84)
        at 
org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
        at 
org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
        at 
org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at 
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:251)
        at 
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:97)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at 
org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
        at 
org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at 
org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:190)
        at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
        at 
com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
        at 
com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
        at 
com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
        at 
com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
        at 
com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:231)
        at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:55)
   Caused by: org.apache.ibatis.executor.ExecutorException: Error preparing 
statement.  Cause: java.lang.NullPointerException
        at 
org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:97)
        at 
org.apache.ibatis.executor.statement.RoutingStatementHandler.prepare(RoutingStatementHandler.java:59)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
        at 
com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106)
        at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        at com.sun.proxy.$Proxy292.prepare(Unknown Source)
        at 
org.apache.ibatis.executor.SimpleExecutor.prepareStatement(SimpleExecutor.java:87)
        at 
org.apache.ibatis.executor.SimpleExecutor.doUpdate(SimpleExecutor.java:49)
        at org.apache.ibatis.executor.BaseExecutor.update(BaseExecutor.java:117)
        at 
org.apache.ibatis.executor.CachingExecutor.update(CachingExecutor.java:76)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at org.apache.ibatis.plugin.Invocation.proceed(Invocation.java:49)
        at 
com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor.intercept(MybatisPlusInterceptor.java:106)
        at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:62)
        at com.sun.proxy.$Proxy291.update(Unknown Source)
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:194)
        at 
org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:181)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
        ... 40 more
   Caused by: java.lang.NullPointerException
        at 
org.apache.shardingsphere.infra.database.type.DatabaseTypeEngine.getTrunkDatabaseTypeName(DatabaseTypeEngine.java:151)
        at 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:194)
        at 
org.apache.shardingsphere.driver.jdbc.core.statement.ShardingSpherePreparedStatement.<init>(ShardingSpherePreparedStatement.java:172)
        at 
org.apache.shardingsphere.driver.jdbc.core.connection.ShardingSphereConnection.prepareStatement(ShardingSphereConnection.java:116)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        at 
org.apache.ibatis.logging.jdbc.ConnectionLogger.invoke(ConnectionLogger.java:55)
        at com.sun.proxy.$Proxy205.prepareStatement(Unknown Source)
        at 
org.apache.ibatis.executor.statement.PreparedStatementHandler.instantiateStatement(PreparedStatementHandler.java:83)
        at 
org.apache.ibatis.executor.statement.BaseStatementHandler.prepare(BaseStatementHandler.java:88)
        ... 68 more
   ```
   When I use this config, it works. 
   ```yaml
   spring:
     servlet:
       multipart:
         enabled: true
         max-file-size: 1024MB
         max-request-size: 1024MB
     elasticsearch:
       rest:
         uris: 
     shardingsphere:
       # 模式
       mode:
         type: Standalone # 单机模式
         repository:
           type: JDBC
       datasource:
         # 数据源
         names: ds_0
         ds_0:
           type: com.zaxxer.hikari.HikariDataSource
           driver-class-name: com.mysql.cj.jdbc.Driver
           jdbc-url: 
           username: 
           password: 
           hikari:
             maximum-pool-size: 20
             minimum-idle: 5
       # 规则配置
       rules:
         # 数据分片配置
         sharding:
           tables:
             # 逻辑表名
             t_game_assets_record: 
               # 数据源名 + 名表
               actual-data-nodes: ds_0.t_game_assets_record_$->{0..3}
               # 分库策略(默认)
               # 分表策略
               table-strategy:
                 standard: # 标准单片分键
                   # 分片列
                   sharding-column: game_identity  
                   # 分片算法
                   sharding-algorithm-name: 
game_asset_sharding_by_game_identity 
               key-generate-strategy:
                 column: id
                 key-generator-name: snowflake
           # 分片算法配置
           sharding-algorithms:
             game_asset_sharding_by_game_identity:
               # 分片算法类型: 哈希
               type: HASH_MOD 
               # 分片算法属性配置
               props: 
                 sharding-count: 4
           keyGenerators:
             snowflake:
               type: SNOWFLAKE
       # 属性配置
       props:
         sql-show: false
         # sql-simple: true
   ```
   WTF? Is the configuration in the official documentation wrong?Is underscore 
the correct naming method?Its old style?
   
   


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

Reply via email to