我从stmt.executeBatch()语句中收到此BatchUpdateException:
BatchUpdateException: A resultset was created for update
互联网上没有关于此异常消息的任何信息。这是什么意思?除了存储过程失败之外,回溯不包含任何有用的东西。
答案 0 :(得分:10)
我将该消息解释为您通过addBatch()
添加的SQL语句产生了ResultSet
,这意味着它不是您的正常INSERT
,UPDATE
或DELETE
声明。
无法使用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