Hi Shimun, Thank you very much for your message. I suspect that the Spring Boot autoconfiguration still works for you because that Spring Boot version you're using still depends on a jOOQ 3.13 version.
Starting from jOOQ 3.13, the minimum supported MariaDB version of the jOOQ Open Source Edition was 10.5. Since we've increased this requirement, we've started supporting newer MariaDB features, including the very useful INSERT .. RETURNING support in jOOQ 3.14: https://github.com/jOOQ/jOOQ/issues/9212 The jOOQ Professional and Enterprise Editions continue to support MariaDB versions 10.0 - 10.5 from jOOQ 3.13 onwards. For more details about supported RDBMS versions, please refer to this page here: https://www.jooq.org/download/support-matrix Please let me know if you have any additional questions, and I'll be very happy to help. Lukas On Wed, Dec 2, 2020 at 5:22 PM Shimun Matić <[email protected]> wrote: > org.jooq.exception.DataAccessException: SQL [insert into > `db_test`.`person` (`firstname`, `lastname`, `username`, `email`) values > (?, ?, ?, ?) returning `id`]; Can not issue data manipulation statements > with executeQuery(). > > at org.jooq_3.14.4.MARIADB.debug(Unknown Source) > at org.jooq.impl.Tools.translate(Tools.java:2904) > at > org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:757) > at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:389) > at org.jooq.impl.TableRecordImpl.storeInsert0(TableRecordImpl.java:218) > at org.jooq.impl.TableRecordImpl$1.operate(TableRecordImpl.java:183) > at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:131) > at org.jooq.impl.TableRecordImpl.storeInsert(TableRecordImpl.java:179) > at org.jooq.impl.UpdatableRecordImpl.store0(UpdatableRecordImpl.java:219) > at > org.jooq.impl.UpdatableRecordImpl.access$000(UpdatableRecordImpl.java:89) > at > org.jooq.impl.UpdatableRecordImpl$1.operate(UpdatableRecordImpl.java:145) > at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:131) > at org.jooq.impl.UpdatableRecordImpl.store(UpdatableRecordImpl.java:141) > at org.jooq.impl.UpdatableRecordImpl.store(UpdatableRecordImpl.java:133) > at > com.example.jooqtest.JooqTestApplicationTests.testSavingToMariaDb(JooqTestApplicationTests.java:26) > at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native > Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:564) > at > org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) > at > org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60) > at > org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131) > at > org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149) > at > org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140) > at > org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestMethod(TimeoutExtension.java:84) > at > org.junit.jupiter.engine.execution.ExecutableInvoker$ReflectiveInterceptorCall.lambda$ofVoidMethod$0(ExecutableInvoker.java:115) > at > org.junit.jupiter.engine.execution.ExecutableInvoker.lambda$invoke$0(ExecutableInvoker.java:105) > at > org.junit.jupiter.engine.execution.InvocationInterceptorChain$InterceptedInvocation.proceed(InvocationInterceptorChain.java:106) > at > org.junit.jupiter.engine.execution.InvocationInterceptorChain.proceed(InvocationInterceptorChain.java:64) > at > org.junit.jupiter.engine.execution.InvocationInterceptorChain.chainAndInvoke(InvocationInterceptorChain.java:45) > at > org.junit.jupiter.engine.execution.InvocationInterceptorChain.invoke(InvocationInterceptorChain.java:37) > at > org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:104) > at > org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:98) > at > org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:210) > at > org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) > at > org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:206) > at > org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:131) > at > org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:65) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:139) > at > org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) > at > org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) > at > org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) > at > org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) > at > org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) > at > org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) > at > org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) > at java.base/java.util.ArrayList.forEach(ArrayList.java:1511) > at > org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:143) > at > org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$7(NodeTestTask.java:129) > at > org.junit.platform.engine.support.hierarchical.Node.around(Node.java:137) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$8(NodeTestTask.java:127) > at > org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:126) > at > org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:84) > at > org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32) > at > org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57) > at > org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51) > at > org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:108) > at > org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:88) > at > org.junit.platform.launcher.core.EngineExecutionOrchestrator.lambda$execute$0(EngineExecutionOrchestrator.java:54) > at > org.junit.platform.launcher.core.EngineExecutionOrchestrator.withInterceptedStreams(EngineExecutionOrchestrator.java:67) > at > org.junit.platform.launcher.core.EngineExecutionOrchestrator.execute(EngineExecutionOrchestrator.java:52) > at > org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:96) > at > org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) > at > com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:71) > at > com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33) > at > com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:220) > at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:53) > Caused by: java.sql.SQLException: Can not issue data manipulation > statements with executeQuery(). > at > com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) > at > com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) > at > com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) > at > com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) > at com.mysql.cj.jdbc.StatementImpl.checkForDml(StatementImpl.java:367) > at > com.mysql.cj.jdbc.ClientPreparedStatement.executeQuery(ClientPreparedStatement.java:962) > at > com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery(ProxyPreparedStatement.java:52) > at > com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery(HikariProxyPreparedStatement.java) > at > org.jooq.tools.jdbc.DefaultPreparedStatement.executeQuery(DefaultPreparedStatement.java:99) > at > org.jooq.impl.AbstractDMLQuery.executeReturningQuery(AbstractDMLQuery.java:1230) > at org.jooq.impl.AbstractDMLQuery.execute(AbstractDMLQuery.java:1039) > at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:375) > ... 76 more > > > On Wednesday, December 2, 2020 at 5:21:24 PM UTC+1 Shimun Matić wrote: > >> Hello. >> >> I've been using JOOQ with Spring for a few months now and everything was >> great until I upgraded the project to the latest Spring Boot version. >> (2.3.5 RELEASE to 2.4.0) >> >> With the latest Spring release comes the latest JOOQ release (3.13.5 to >> 3.14.4) >> >> I am facing the problem when I try to store a record. (Exception at the >> end of the post) >> Important thing to note is that this only happens when I am *not* using >> autoconfiguration. >> With JooqAutoConfiguration class enabled, everything works as expected. >> Another important factor is the database. I am using MariaDB, tested with >> 10.1.38 and 10.5.x (docker latest). >> >> What I had tried: >> 1. Downgraded JOOQ version to 3.13.x - worked as expected >> 2. Downgraded JOOQ version to 3.14.0 - same error >> 3. Used different DB (postgres) - worked as expected >> >> So it seems to me that there has been some change in 3.14.x that broke >> the simplest (manual) DSL configuration for MariaDB (This configuration >> works with older version and with postgres). >> >> I have made a simple project which showcases the problem. >> GitHub <https://github.com/shimunmatic/jooq-test> >> >> If you want to test the project: >> 1. jdbc url (pom and application.yml) has to be changed to point to your >> db >> (or you can create test db with docker, this way URL stays the same: >> docker run --name mariadb -e MYSQL_DATABASE=db_test -e >> MYSQL_ROOT_PASSWORD=password -d -p 3306:3306 mariadb:latest) >> 2. change java version to the one you have, 15 was used. (tested on JDK >> 11 too) >> >> Does anybody know if I am missing something in the DSL configuration or >> is this a bug? >> >> Thanks, >> Shimun >> >> >> -- > You received this message because you are subscribed to the Google Groups > "jOOQ User Group" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/jooq-user/b4dbbfac-940f-41cd-8f6a-d69b76f06cafn%40googlegroups.com > <https://groups.google.com/d/msgid/jooq-user/b4dbbfac-940f-41cd-8f6a-d69b76f06cafn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "jOOQ User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/jooq-user/CAB4ELO63867A%3DNVeK0_E%3DDXH6FeHT3K_U8FKgdOuhs_3aK-LzQ%40mail.gmail.com.
