在一个被分布式Java桌面应用程序通过JDBC访问的特别请求的DB2表中,我每天得到以下几次场景:
过去工作很好,而且大部分时间都是这样,但是锁的情况越来越频繁。
自动提交开始了。
日志中没有引发任何异常或检测到错误。
DB2 9.5 / JDBC驱动程序9.1 (JDBC3规范)
发布于 2018-04-02 16:38:02
如果jdbc应用程序没有执行提交,那么锁将一直保持到回滚或提交为止。如果应用程序退出使用未提交的插入,那么所有最新版本的Db2都会发生回滚。这是Db2在Linux/Unix/Windows上的预期行为。
如果jdbc应用程序未能提交,那么它被破坏或配置错误,因此如果您寻求永久的解决方案,就必须找出根本原因。
如果其他客户机希望忽略插入行锁,那么他们应该选择正确的隔离级别,您可以将Db2配置为跳过插入锁。参见文档DB2_SKIPINSERTED at this 链接
发布于 2018-04-06 15:22:38
事实证明,有时自动提交(我不知道为什么)会变成应用程序的一个随机的单个实例。
以下验证似乎解决了问题(但没有解决问题的根源):
if (!conn.getAutoCommit()) {
conn.commit();
}https://stackoverflow.com/questions/49614814
复制相似问题