求助:select XXX for update语句报错:语句不在一个事务内
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】: GBase 8s V8.8
【操作系统】: Linux
【CPU】:
【问题描述】*:
系统原本使用MySQL8数据库,架构包含:springboot-2.3.3.RELEASE + mybatisplus-3.5.1 + quartz-2.3.2,在适配GBase 8s 时,出现以下问题:GBase8s数据库初始化后,启动系统,在系统启动后,quartz框架执行sql语句时,出现报错如下:
2024-05-29 10:28:45.085 ERROR 17872 --- [ main] druid.sql.Statement : {conn-110001, pstmt-120006} execute error. select *
from QRTZ_LOCKS
where SCHED_NAME = 'zhScheduler'
and LOCK_NAME = 'TRIGGER_ACCESS'
for update
java.sql.SQLException: 语句不在一个事务中。
at com.gbasedbt.util.IfxErrMsg.getSQLException(IfxErrMsg.java:409) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:3576) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxSqli.D(IfxSqli.java:3856) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxSqli.dispatchMsg(IfxSqli.java:2746) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxSqli.receiveMessage(IfxSqli.java:2671) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxSqli.a(IfxSqli.java:1884) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1648) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxSqli.executeStatementQuery(IfxSqli.java:1543) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxResultSet.a(IfxResultSet.java:215) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxStatement.executeQueryImpl(IfxStatement.java:1253) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.gbasedbt.jdbc.IfxPreparedStatement.executeQuery(IfxPreparedStatement.java:540) ~[gbase-connector-java-3.5.1.jar:3.5.1_1_d0c87a]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3225) [druid-1.2.16.jar:na]
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:459) [druid-1.2.16.jar:na]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3222) [druid-1.2.16.jar:na]
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:459) [druid-1.2.16.jar:na]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3222) [druid-1.2.16.jar:na]
at com.alibaba.druid.filter.FilterEventAdapter.preparedStatement_executeQuery(FilterEventAdapter.java:459) [druid-1.2.16.jar:na]
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeQuery(FilterChainImpl.java:3222) [druid-1.2.16.jar:na]
at com.alibaba.druid.proxy.jdbc.PreparedStatementProxyImpl.executeQuery(PreparedStatementProxyImpl.java:166) [druid-1.2.16.jar:na]
at com.alibaba.druid.pool.DruidPooledPreparedStatement.executeQuery(DruidPooledPreparedStatement.java:213) [druid-1.2.16.jar:na]
at org.quartz.impl.jdbcjobstore.StdRowLockSemaphore.executeSQL(StdRowLockSemaphore.java:123) [quartz-2.3.2.jar:na]
at org.quartz.impl.jdbcjobstore.DBSemaphore.obtainLock(DBSemaphore.java:113) [quartz-2.3.2.jar:na]
at org.quartz.impl.jdbcjobstore.JobStoreCMT.executeInLock(JobStoreCMT.java:238) [quartz-2.3.2.jar:na]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.clearAllSchedulingData(JobStoreSupport.java:2002) [quartz-2.3.2.jar:na]
at org.quartz.core.QuartzScheduler.clear(QuartzScheduler.java:1547) [quartz-2.3.2.jar:na]
at org.quartz.impl.StdScheduler.clear(StdScheduler.java:239) [quartz-2.3.2.jar:na]
然后我通过idea的数据库连接管理组件连接到Base8s,单独执行select XXX for update,一样会报错:语句不在一个事务中
有没有遇到过相同问题的朋友,有没有什么办法解决?
评论

Started transaction.
> select * from t300 where id>=2 for update;
id 3
col1 cccccc
col2 2024-05-22 11:36:10
id 4
col1 ddddddddd
col2 2024-05-23 14:50:02
2 row(s) retrieved.

Database selected.
> begin;
Started transaction.
> select * from t300 where id>=2 for update;
id 3
col1 cccccc
col2 2024-05-22 11:36:10
id 4
col1 ddddddddd
col2 2024-05-23 14:50:02
2 row(s) retrieved.
热门帖子
- 12025-12-01浏览数:182763
- 22023-05-09浏览数:25057
- 42023-09-25浏览数:18525
- 52020-05-11浏览数:17528