执行 jdbc batchUpdate 时出现 DeadlockLoserDataAccessException

Posted

技术标签:

【中文标题】执行 jdbc batchUpdate 时出现 DeadlockLoserDataAccessException【英文标题】:DeadlockLoserDataAccessException while executing jdbc batchUpdate 【发布时间】:2013-03-08 12:53:58 【问题描述】:

最近我遇到了以下异常: org.springframework.dao.DeadlockLoserDataAccessException: PreparedStatementCallback;

它是在我的代码调用以下方法时出现的: int[] org.springframework.jdbc.core.JdbcTemplate.batchUpdate(String[] sql) throws DataAccessException

简而言之,我在执行批处理 jdbc 查询时得到了DeadlockLoserDataAccessException

现在,即使它是一个运行时异常,我还是决定抓住它并重试。

但我不确定批处理中的查询会发生什么。他们都回滚了吗?还是抛出此异常之后的查询没有执行,而在此之前的所有查询都已执行?

【问题讨论】:

【参考方案1】:

您应该在事务之外捕获死锁异常。

如果您的事务管理器设置为异常回滚,则批处理中的所有查询都将回滚。

【讨论】:

以上是关于执行 jdbc batchUpdate 时出现 DeadlockLoserDataAccessException的主要内容,如果未能解决你的问题,请参考以下文章

通过 JTDS 驱动程序执行 SQL Server 调用时出现“第 24 行位置的 JDBC 转义语法无效 '=' 预期字符”错误的原因?

JdbcBatchItemWriterBuilder 与 org.springframework.jdbc.core.jdbcTemplate.batchUpdate

受影响的 Oracle JDBC batchUpdate 行始终为 -2 (Statement.SUCCESS_NO_INFO)

与android上的mysql jdbc连接器连接时出现ClassNotFoundException

Spring JdbcTemplate.batchUpdate()

通过 jdbc 客户端使用 hive udf 时出现奇怪的错误