Closed 18356555003 closed 2 years ago
Hi @18356555003
Oracle Database is reporting that it can not recognize the following as valid SQL:
未找到要求的 FROM 关键字
I only know English, so I can't discern much of the non-English characters. Regardless, I think these should serve as valid names for columns and tables.
I believe there should be SELECT
or DELETE
keyword at the beginning. If we don't have that, then the database will report ORA-00923.
It looks like you are using Spring to generate this SQL. I think you may want to check with that team about this case.
I hope this helps!
Thanks @Michael-A-McMahon The characters is Chinese... The same code run success with MySQL ,but fail with oracle. My project : Spring-r2dbc + oracle-r2dbc
Have you checked with the Spring R2DBC team?
I think the SQL should be:
SELECT 未找到要求的 FROM 关键字
But Spring is generating SQL without the SELECT
:
未找到要求的 FROM 关键字
@mp911de: Any idea about this?
I'm actually wondering where this problem comes from. In any case, this is the wrong issue tracker when it comes to SQL generation, @18356555003 please file a bug report in https://github.com/spring-projects/spring-data-relational along with a complete reproducer (entity, repository). It would be helpful to also enable debug logging for the org.springframework.r2dbc
category to see what SQL is being executed.
Thanks for the assist, @mp911de! I'll close this issue as it does not seem to be caused by Oracle R2DBC.
spring.application.name=test-r2dbc spring.r2dbc.url=r2dbc:oracle:thin://localhost:1521:orcl spring.r2dbc.username=c##test spring.r2dbc.password=123123 spring.r2dbc.pool.max-size=100 spring.r2dbc.pool.max-idle-time=2m spring.r2dbc.pool.initial-size=100 spring.r2dbc.pool.validation-query=select 1
public interface TestDao extends ReactiveCrudRepository<Test,String> {
}
@RestController @RequestMapping("/test") public class TestController { private final TestDao testDao;
}
org.springframework.dao.DataAccessResourceFailureException: Failed to obtain R2DBC Connection; nested exception is io.r2dbc.spi.R2dbcBadGrammarException: [923] [42000] ORA-00923: 未找到要求的 FROM 关键字
Error has been observed at the following site(s): __checkpoint ⇢ Handler com.example.testr2dbc.controller.TestController#getAllList() [DispatcherHandler] __checkpoint ⇢ HTTP GET "/test/test" [ExceptionHandlingWebHandler] Original Stack Trace: at org.springframework.r2dbc.connection.ConnectionFactoryUtils.lambda$getConnection$0(ConnectionFactoryUtils.java:88) ~[spring-r2dbc-5.3.22.jar:5.3.22] at reactor.core.publisher.Mono.lambda$onErrorMap$31(Mono.java:3730) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:94) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.FluxRetry$RetrySubscriber.onError(FluxRetry.java:95) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.MonoFlatMap$FlatMapMain.secondError(MonoFlatMap.java:192) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.MonoFlatMap$FlatMapInner.onError(MonoFlatMap.java:259) ~[reactor-core-3.4.22.jar:3.4.22] at io.r2dbc.pool.MonoDiscardOnCancel$MonoDiscardOnCancelSubscriber.onError(MonoDiscardOnCancel.java:98) ~[r2dbc-pool-0.9.0.RELEASE.jar:0.9.0.RELEASE] at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onError(FluxOnErrorResume.java:106) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onError(MonoIgnoreThen.java:278) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.subscribeNext(MonoIgnoreThen.java:231) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.MonoIgnoreThen$ThenIgnoreMain.onComplete(MonoIgnoreThen.java:203) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.FluxDoFinally$DoFinallySubscriber.onComplete(FluxDoFinally.java:128) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:102) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.MonoNext$NextSubscriber.onComplete(MonoNext.java:102) ~[reactor-core-3.4.22.jar:3.4.22] at oracle.r2dbc.impl.AsyncLock$UsingConnectionSubscriber.onComplete(AsyncLock.java:503) ~[oracle-r2dbc-1.0.0.jar:1.0.0] at reactor.core.publisher.StrictSubscriber.onComplete(StrictSubscriber.java:123) ~[reactor-core-3.4.22.jar:3.4.22] at reactor.core.publisher.Operators$MultiSubscriptionSubscriber.onComplete(Operators.java:2058) ~[reactor-core-3.4.22.jar:3.4.22] at org.reactivestreams.FlowAdapters$FlowToReactiveSubscriber.onComplete(FlowAdapters.java:221) ~[reactive-streams-1.0.4.jar:na] at oracle.jdbc.internal.CompletionStageUtil$IteratorSubscription.emitComplete(CompletionStageUtil.java:805) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at oracle.jdbc.internal.CompletionStageUtil$BatchItemPublisher.subscribeToBatch(CompletionStageUtil.java:622) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at oracle.jdbc.internal.CompletionStageUtil$BatchItemPublisher.lambda$subscribe$0(CompletionStageUtil.java:593) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863) ~[na:na] at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510) ~[na:na] at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147) ~[na:na] at oracle.jdbc.driver.T4CTTIfun.lambda$doRPCAsync$0(T4CTTIfun.java:348) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at oracle.jdbc.driver.T4CTTIfun.lambda$receiveRPCAsync$1(T4CTTIfun.java:474) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at oracle.jdbc.driver.RestrictedLock.lambda$runUnrestricted$0(RestrictedLock.java:428) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at oracle.jdbc.driver.RestrictedLock.callUnrestricted(RestrictedLock.java:447) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at oracle.jdbc.driver.RestrictedLock.runUnrestricted(RestrictedLock.java:427) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at oracle.jdbc.driver.PhysicalConnection.lambda$initializeAsyncExecutor$4(PhysicalConnection.java:1270) ~[ojdbc11-21.5.0.0.jar:21.5.0.0.0] at java.base/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(ForkJoinTask.java:1395) ~[na:na] at java.base/java.util.concurrent.ForkJoinTask.doExec$$$capture(ForkJoinTask.java:373) ~[na:na] at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java) ~[na:na] at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[na:na] at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[na:na] at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[na:na] at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[na:na] Caused by: io.r2dbc.spi.R2dbcBadGrammarException: ORA-00923: 未找到要求的 FROM 关键字
Caused by: java.sql.SQLSyntaxErrorException: ORA-00923: 未找到要求的 FROM 关键字
Caused by: oracle.jdbc.OracleDatabaseException: ORA-00923: 未找到要求的 FROM 关键字