HANA 数据库上的错误 运行 个事务

Error running transactions on HANA database

我在 HANA 数据库上 运行 批量交易并收到以下错误:

2018-01-15 10:23:33,865 ERROR c.c.t.Payment [tpcc-thread-5] UPDATE district SET d_ytd = d_ytd + 1601.0 WHERE d_w_id = 1 AND d_id = 1
com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: [138]: transaction serialization failure: TrexUpdate failed on table 'SYSTEM:DISTRICT' with error: transaction order error, rc=4614
at com.sap.db.jdbc.exceptions.SQLExceptionSapDB._newInstance(SQLExceptionSapDB.java:193)
.......
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
2018-01-15 10:23:34,139 ERROR c.c.t.Payment [tpcc-thread-5] Payment error
java.lang.Exception: Payment update transaction error

有人知道哪里出了问题吗?

我发现这是一个有效的错误。对于事务类型 REPEATABLE_READ 或 SERIALIZABLE,当一个事务结束之前,另一个事务修改了一个事务正在处理的相同数据时,可能会出现此问题。

为了消除这个错误,我们可以使用事务类型READ_COMMITTED,它在开始时对数据进行快照,并在整个事务中使用相同的数据。它还会锁定其正在处理的行,以便其他事务无法修改它。