6

我从 stmt.executeBatch() 语句中得到这个 BatchUpdateException :

BatchUpdateException: A resultset was created for update

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

4

3 回答 3

12

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

应该返回结果的语句不能用 JDBC 批量执行。

JDBC 教程(在“处理批量更新异常”标题下)证实了这一点:

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

您似乎在这里遇到了案例 1。

于 2011-03-15T08:34:36.110 回答
1

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

于 2011-03-15T08:35:12.317 回答
0

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

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

重组表 TABLE_NAME

于 2014-07-03T11:44:49.497 回答