这个BatchUpdateException是什么意思?

时间:2011-03-15 08:05:58

标签: java exception sqlexception batch-updates

我从stmt.executeBatch()语句中收到此BatchUpdateException:

BatchUpdateException: A resultset was created for update

互联网上没有关于此异常消息的任何信息。这是什么意思?除了存储过程失败之外,回溯不包含任何有用的东西。

3 个答案:

答案 0 :(得分:10)

我将该消息解释为您通过addBatch()添加的SQL语句产生了ResultSet,这意味着它不是您的正常INSERTUPDATEDELETE声明。

无法使用JDBC批量执行应返回结果的语句。

JDBC Tutorial(在“处理批量更新例外”标题下)确认:

  

当您调用方法executeBatch时,如果(1)您添加到批处理中的一个SQL语句生成结果集(通常是查询)或(2)批处理中的一个SQL语句,您将收到BatchUpdateException由于某些其他原因而无法成功执行。

你似乎在这里遇到了案例1.

答案 1 :(得分:1)

批量更新是由数据库一起处理的几个插入/更新/删除语句。这通常是出于性能原因而完成的。 1x 1000个插件比1000x 1插件快得多。 BatchUpdateException意味着1个(或更多)语句由于违反约束而最常失败。 您将不得不查看存储过程以查看它正在执行的操作。 Mayby你的dba可以为你提供更多关于出了什么问题的信息。

答案 2 :(得分:0)

我从表中删除了一列。 当我试图将记录插入该表时,我收到了BatchUpdateException。

运行以下命令后问题得到解决

REORG TABLE TABLE_NAME