这个BatchUpdateException是什么意思?

6

我从stmt.executeBatch()语句中得到了BatchUpdateException异常:

BatchUpdateException: A resultset was created for update

这个异常信息在互联网上没有任何相关信息。它是什么意思?追踪回溯中除了存储过程失败的信息之外,没有其他有用的内容。

3个回答

12
我会把这条消息解释为您通过addBatch()添加的SQL语句已经产生了一个ResultSet,这意味着它不是您正常的INSERTUPDATEDELETE语句。
使用JDBC不能批量执行应该返回结果的语句。 JDBC教程(在“处理批量更新异常”标题下)证实了这一点:

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

在这里,您似乎遇到了第一种情况。

1
批量更新是指一次性将多个插入/更新/删除语句一起提交给数据库进行处理。通常出于性能考虑而这样做。一次性执行1000个插入操作比分别执行1000次插入操作要快得多。BatchUpdateException 表示一个或多个语句失败,往往是由于违反了约束条件。您需要查看存储过程以了解它的具体操作。也许您的数据库管理员可以提供更多关于错误的信息。

这是BatchUpdateException的一个原因,他似乎看到了另一个原因(请参见我的答案)。 - Joachim Sauer

0
我从表中删除了一列。当我尝试向该表插入记录时,我遇到了BatchUpdateException异常。
运行下面的命令后,问题得到解决
REORG TABLE TABLE_NAME

这并没有真正回答问题,因为问题是:“BatchUpdateException是什么意思?” - benka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接