linghengqian commented on issue #19655:
URL: 
https://github.com/apache/shardingsphere/issues/19655#issuecomment-1202244237

   - An embarrassing topic is, `CREATE TABLE repository(id varchar(36) PRIMARY 
KEY, key TEXT, value TEXT, parent TEXT);` can only be executed in H2Database 
1.x, if the user uses H2Databse 2.x, when using ShardingSphere Standalone mode 
will throw an exception and cause the project to fail to start. I think 
additional factors should be considered in the processing of this SQL.
   ```shell
   Error starting ApplicationContext. To display the conditions report re-run 
your application with 'debug' enabled.
   2022-08-02 17:17:08.280 ERROR 46368 --- [           main] 
o.s.boot.SpringApplication               : Application run failed
   
   org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'myDataSourceConfiguration': Injection of resource dependencies 
failed; nested exception is 
org.springframework.beans.factory.BeanCreationException: Error creating bean 
with name 'shardingSphereDataSource' defined in class path resource 
[org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.class]: 
Bean instantiation via factory method failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[javax.sql.DataSource]: Factory method 'shardingSphereDataSource' threw 
exception; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax 
error in SQL statement "CREATE TABLE repository(id varchar(36) PRIMARY KEY, 
[*]key TEXT, value TEXT, parent TEXT)"; expected "identifier"; SQL statement:
   CREATE TABLE repository(id varchar(36) PRIMARY KEY, key TEXT, value TEXT, 
parent TEXT) [42001-210]
        at 
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:332)
 ~[spring-context-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1431)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:619)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
 ~[spring-context-5.3.20.jar:5.3.20]
        at 
org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583)
 ~[spring-context-5.3.20.jar:5.3.20]
        at 
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:147)
 ~[spring-boot-2.7.0.jar:2.7.0]
        at 
org.springframework.boot.SpringApplication.refresh(SpringApplication.java:734) 
~[spring-boot-2.7.0.jar:2.7.0]
        at 
org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:408)
 ~[spring-boot-2.7.0.jar:2.7.0]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:308) 
~[spring-boot-2.7.0.jar:2.7.0]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) 
~[spring-boot-2.7.0.jar:2.7.0]
        at 
org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) 
~[spring-boot-2.7.0.jar:2.7.0]
        at 
com.baomidou.samples.shardingSphere.jdbc.v5.spring.ShardingSphereApplication.main(ShardingSphereApplication.java:27)
 ~[classes/:na]
   Caused by: org.springframework.beans.factory.BeanCreationException: Error 
creating bean with name 'shardingSphereDataSource' defined in class path 
resource 
[org/apache/shardingsphere/spring/boot/ShardingSphereAutoConfiguration.class]: 
Bean instantiation via factory method failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Failed to instantiate 
[javax.sql.DataSource]: Factory method 'shardingSphereDataSource' threw 
exception; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax 
error in SQL statement "CREATE TABLE repository(id varchar(36) PRIMARY KEY, 
[*]key TEXT, value TEXT, parent TEXT)"; expected "identifier"; SQL statement:
   CREATE TABLE repository(id varchar(36) PRIMARY KEY, key TEXT, value TEXT, 
parent TEXT) [42001-210]
        at 
org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:658)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:638)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:213)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeanByName(AbstractAutowireCapableBeanFactory.java:479)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.autowireResource(CommonAnnotationBeanPostProcessor.java:550)
 ~[spring-context-5.3.20.jar:5.3.20]
        at 
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.getResource(CommonAnnotationBeanPostProcessor.java:520)
 ~[spring-context-5.3.20.jar:5.3.20]
        at 
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$ResourceElement.getResourceToInject(CommonAnnotationBeanPostProcessor.java:673)
 ~[spring-context-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.annotation.InjectionMetadata$InjectedElement.inject(InjectionMetadata.java:228)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:119)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessProperties(CommonAnnotationBeanPostProcessor.java:329)
 ~[spring-context-5.3.20.jar:5.3.20]
        ... 17 common frames omitted
   Caused by: org.springframework.beans.BeanInstantiationException: Failed to 
instantiate [javax.sql.DataSource]: Factory method 'shardingSphereDataSource' 
threw exception; nested exception is org.h2.jdbc.JdbcSQLSyntaxErrorException: 
Syntax error in SQL statement "CREATE TABLE repository(id varchar(36) PRIMARY 
KEY, [*]key TEXT, value TEXT, parent TEXT)"; expected "identifier"; SQL 
statement:
   CREATE TABLE repository(id varchar(36) PRIMARY KEY, key TEXT, value TEXT, 
parent TEXT) [42001-210]
        at 
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
 ~[spring-beans-5.3.20.jar:5.3.20]
        at 
org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:653)
 ~[spring-beans-5.3.20.jar:5.3.20]
        ... 33 common frames omitted
   Caused by: org.h2.jdbc.JdbcSQLSyntaxErrorException: Syntax error in SQL 
statement "CREATE TABLE repository(id varchar(36) PRIMARY KEY, [*]key TEXT, 
value TEXT, parent TEXT)"; expected "identifier"; SQL statement:
   CREATE TABLE repository(id varchar(36) PRIMARY KEY, key TEXT, value TEXT, 
parent TEXT) [42001-210]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:521) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.message.DbException.getJdbcSQLException(DbException.java:496) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.message.DbException.getSyntaxError(DbException.java:265) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.readIdentifier(Parser.java:5759) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.parseTableColumnDefinition(Parser.java:9355) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.parseCreateTable(Parser.java:9298) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.parseCreate(Parser.java:6779) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.parsePrepared(Parser.java:746) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.parse(Parser.java:674) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.parse(Parser.java:644) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.command.Parser.prepareCommand(Parser.java:551) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.engine.SessionLocal.prepareLocal(SessionLocal.java:615) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.engine.SessionLocal.prepareCommand(SessionLocal.java:553) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1116) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:237) 
~[h2-2.1.210.jar:2.1.210]
        at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:223) 
~[h2-2.1.210.jar:2.1.210]
        at 
org.apache.shardingsphere.mode.repository.standalone.jdbc.JDBCRepository.initTable(JDBCRepository.java:53)
 
~[shardingsphere-standalone-mode-repository-jdbc-core-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.mode.repository.standalone.h2.H2Repository.init(H2Repository.java:47)
 
~[shardingsphere-standalone-mode-repository-jdbc-h2-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.spi.type.required.RequiredSPIRegistry.getRegisteredService(RequiredSPIRegistry.java:45)
 ~[shardingsphere-spi-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.mode.repository.standalone.StandalonePersistRepositoryFactory.getInstance(StandalonePersistRepositoryFactory.java:44)
 
~[shardingsphere-standalone-mode-repository-api-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.mode.manager.standalone.StandaloneContextManagerBuilder.build(StandaloneContextManagerBuilder.java:46)
 ~[shardingsphere-standalone-mode-core-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource.createContextManager(ShardingSphereDataSource.java:76)
 ~[shardingsphere-jdbc-core-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource.<init>(ShardingSphereDataSource.java:64)
 ~[shardingsphere-jdbc-core-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.driver.api.ShardingSphereDataSourceFactory.createDataSource(ShardingSphereDataSourceFactory.java:93)
 ~[shardingsphere-jdbc-core-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration.shardingSphereDataSource(ShardingSphereAutoConfiguration.java:91)
 
~[shardingsphere-jdbc-core-spring-boot-starter-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration$$EnhancerBySpringCGLIB$$9e4994a0.CGLIB$shardingSphereDataSource$0(<generated>)
 
~[shardingsphere-jdbc-core-spring-boot-starter-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration$$EnhancerBySpringCGLIB$$9e4994a0$$FastClassBySpringCGLIB$$b7ed0820.invoke(<generated>)
 
~[shardingsphere-jdbc-core-spring-boot-starter-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) 
~[spring-core-5.3.20.jar:5.3.20]
        at 
org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331)
 ~[spring-context-5.3.20.jar:5.3.20]
        at 
org.apache.shardingsphere.spring.boot.ShardingSphereAutoConfiguration$$EnhancerBySpringCGLIB$$9e4994a0.shardingSphereDataSource(<generated>)
 
~[shardingsphere-jdbc-core-spring-boot-starter-5.1.3-SNAPSHOT.jar:5.1.3-SNAPSHOT]
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
~[na:na]
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
 ~[na:na]
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
 ~[na:na]
        at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]
        at 
org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
 ~[spring-beans-5.3.20.jar:5.3.20]
        ... 34 common frames omitted
   ```
   - This at least affects 
https://github.com/apache/shardingsphere/issues/15327 .
   - I think the SQL change proposed by @huangxinjian at 
https://github.com/apache/shardingsphere/issues/19766#issue-1325180718 is 
acceptable.


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