【问题标题】:Java db2 error SQLCODE=-913 SQLSTATE=57003 SQLERRMC=schema.table; table, driver=4.1xxxJava db2 错误 SQLCODE=-913 SQLSTATE=57003 SQLERRMC=schema.table;表,驱动程序=4.1xxx
【发布时间】:2015-09-12 19:47:18
【问题描述】:

我编写了一个简单的 Java 应用程序,它基本上执行一个由 4 个连接表组成的 SELECT SQL 语句。然后我执行 SQL 语句并将其保存到resultSet。当我在 300K+ 中的 200K+ 记录上循环 resultSet 时,我收到以下错误消息:

SQLCODE=-913 SQLSTATE=57003 SQLERRMC=schema.table;表,驱动程序=4.1xxx

根据我目前所读到的内容,这意味着它是一个死锁错误。这是否可能发生在如此小的结果集(300K)和 select 语句上?

【问题讨论】:

  • 你能发布你的代码吗?如果您的代码太大,请使用pastie.org
  • 这是一个死锁超时。检查原因码以确定哪个原因代码:2 = 事务分支由于死锁而失败,68 = 事务分支由于锁定超时而失败,72 = 事务由于涉及事务中涉及的 DB2 数据链接管理器的错误而回滚,80 = 语句由于超时而失败

标签: java jdbc db2


【解决方案1】:

当两个或多个事务处于一个锁等待的循环中时,就会发生死锁,并且锁超时不会破坏循环。默认情况下,当在表或索引扫描期间执行行锁定时,DB2 在确定该行是否符合查询条件之前锁定每一行。可能是您的表或索引扫描时间过长,并且还有其他待处理的事务。

这是一个关于 DB2 锁的精彩文档。 http://www.ibm.com/developerworks/data/library/techarticle/dm-0509schuetz/ 还有一些关于如何解决锁定问题的建议。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多