我从 stmt.executeBatch() 语句中得到这个 BatchUpdateException :
BatchUpdateException: A resultset was created for update
互联网上没有关于此异常消息的任何信息。这是什么意思?除了存储过程失败之外,回溯不包含任何有用的信息。
我从 stmt.executeBatch() 语句中得到这个 BatchUpdateException :
BatchUpdateException: A resultset was created for update
互联网上没有关于此异常消息的任何信息。这是什么意思?除了存储过程失败之外,回溯不包含任何有用的信息。
我将该消息解释为您通过添加的 SQL 语句addBatch()
产生了 a ResultSet
,这意味着它不是您的正常INSERT
, UPDATE
orDELETE
语句。
应该返回结果的语句不能用 JDBC 批量执行。
JDBC 教程(在“处理批量更新异常”标题下)证实了这一点:
如果 (1) 您添加到批处理中的 SQL 语句之一产生结果集(通常是查询)或 (2) 批处理中的 SQL 语句之一未成功执行,您将在调用方法 executeBatch 时收到 BatchUpdateException出于某种其他原因。
您似乎在这里遇到了案例 1。
批量更新是由数据库一起处理的几个插入/更新/删除语句。这通常是出于性能原因而完成的。1x 1000 插入比 1000x 1 插入快得多。BatchUpdateException 意味着 1 个(或多个)语句通常由于违反约束而失败。您将不得不查看存储过程以了解它在做什么。也许您的 dba 可以为您提供有关问题所在的更多信息。
我从表中删除了一列。当我尝试将记录插入该表时,我收到了 BatchUpdateException。
运行以下命令后问题得到解决
重组表 TABLE_NAME