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

   **依赖:**
   <dependencies>
   
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <version>8.0.19</version>
           </dependency>
           <dependency>
               <groupId>cn.hutool</groupId>
               <artifactId>hutool-all</artifactId>
               <version>5.7.16</version>
           </dependency>
           <dependency>
               <groupId>org.apache.shardingsphere</groupId>
               
<artifactId>shardingsphere-jdbc-core-spring-boot-starter</artifactId>
               <version>5.0.0</version>
           </dependency>
           <dependency>
               <groupId>com.oracle</groupId>
               <artifactId>ojdbc8</artifactId>
               <version>12.2.0</version>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-data-jpa</artifactId>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-web</artifactId>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-devtools</artifactId>
               <scope>runtime</scope>
           </dependency>
           <dependency>
               <groupId>mysql</groupId>
               <artifactId>mysql-connector-java</artifactId>
               <scope>runtime</scope>
           </dependency>
           <dependency>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-test</artifactId>
               <scope>test</scope>
           </dependency>
           <!-- lombok -->
           <dependency>
               <groupId>org.projectlombok</groupId>
               <artifactId>lombok</artifactId>
               <optional>true</optional>
           </dependency>
           <!-- druid -->
           <dependency>
               <groupId>com.alibaba</groupId>
               <artifactId>druid</artifactId>
               <version>1.1.9</version>
           </dependency>
       </dependencies>
   
   **采用java配置类的方式配置分表**
   表名:document,分表字段:year
   
   @Configuration
   @Slf4j
   @RequiredArgsConstructor
   public class ShardingDataSourceConfig {
       private final Database0Config database0Config;
   
       @Bean(name = "shardingDataSource")
       @Qualifier("shardingDataSource")
       DataSource getShardingDataSource() throws SQLException {
           //数据源配置
           // ... 忽略其他数据库配置项
           Map<String, DataSource> datasourceMaps = new HashMap<>(6);
           datasourceMaps.put("ds0", database0Config.createDataSource());
           //分片规则配置
   
           // 表达式 ds_${0..1} 枚举值表示的是主从配置的逻辑数据源名称列表
           ShardingTableRuleConfiguration tOrderRuleConfiguration = new 
ShardingTableRuleConfiguration("document", "ds0.document_$->{2021..2023}");
           tOrderRuleConfiguration.setKeyGenerateStrategy(new 
KeyGenerateStrategyConfiguration("id", "snowflake"));
           tOrderRuleConfiguration.setTableShardingStrategy(new 
StandardShardingStrategyConfiguration("year", "tOrderInlineShardingAlgorithm"));
   
           ShardingRuleConfiguration shardingRuleConfiguration = new 
ShardingRuleConfiguration();
           shardingRuleConfiguration.getTables().add(tOrderRuleConfiguration);
           shardingRuleConfiguration.getBindingTableGroups().add("document");
   
           Properties tOrderShardingInlineProps = new Properties();
           tOrderShardingInlineProps.setProperty("algorithm-expression", 
"document_$->{year}");
           
shardingRuleConfiguration.getShardingAlgorithms().putIfAbsent("tOrderInlineShardingAlgorithm",
 new ShardingSphereAlgorithmConfiguration("INLINE", tOrderShardingInlineProps));
   
           // 默认分库策略
           // shardingRuleConfiguration.setDefaultDatabaseShardingStrategy(new 
StandardShardingStrategyConfiguration("user_id", "default_db_strategy_inline"));
           // Properties defaultDatabaseStrategyInlineProps = new Properties();
           // 
defaultDatabaseStrategyInlineProps.setProperty("algorithm-expression", 
"ds_${user_id % 2}");
           // 
shardingRuleConfiguration.getShardingAlgorithms().put("default_db_strategy_inline",new
 
ShardingSphereAlgorithmConfiguration("INLINE",defaultDatabaseStrategyInlineProps));
   
           //其他配置
           Properties otherProperties = new Properties();
           otherProperties.setProperty("sql-show", "true");
           //shardingDataSource 就是最终被 ORM 框架或其他 jdbc 框架引用的数据源名称
           DataSource shardingDataSource = 
ShardingSphereDataSourceFactory.createDataSource(datasourceMaps, 
Arrays.asList(shardingRuleConfiguration), otherProperties);
           return shardingDataSource;
       }
   }
   
   **插入数据时报错:**
   用MySQL数据库就成功了,换成oracle数据库失败了,SQL拿到navicat执行没有错误,是我哪里没配置对吗
   
   2023-02-28 16:45:23.061  INFO 19248 --- [nio-8088-exec-2] 
o.s.web.servlet.DispatcherServlet        : FrameworkServlet 
'dispatcherServlet': initialization completed in 27 ms
   Hibernate: select documenten0_.id as id1_0_0_, documenten0_.document_detail 
as document2_0_0_, documenten0_.document_name as document3_0_0_, 
documenten0_.year as year4_0_0_ from document documenten0_ where 
documenten0_.id=?
   2023-02-28 16:45:23.939 ERROR 19248 --- [nio-8088-exec-2] 
o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet 
[dispatcherServlet] in context with path [] threw exception [Request processing 
failed; nested exception is 
com.google.common.util.concurrent.UncheckedExecutionException: 
org.apache.shardingsphere.sql.parser.exception.SQLParsingException: You have an 
error in your SQL syntax] with root cause
   
   org.apache.shardingsphere.sql.parser.exception.SQLParsingException: You have 
an error in your SQL syntax
        at 
org.apache.shardingsphere.sql.parser.core.database.parser.SQLParserExecutor.twoPhaseParse(SQLParserExecutor.java:68)
 ~[shardingsphere-sql-parser-engine-5.0.0.jar:5.0.0]
   
   
![image](https://user-images.githubusercontent.com/54241658/221803141-9892bad8-ad41-4a7f-8629-3c188d20910e.png)
   


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