Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What does this BatchUpdateException mean?

I'm getting this BatchUpdateException from a stmt.executeBatch() statement:

BatchUpdateException: A resultset was created for update

The internet does not have any information on this exception message. What does it mean? The traceback doesn't contain anything useful other than that a stored procedure failed.

like image 823
Björn Lindqvist Avatar asked Mar 15 '11 08:03

Björn Lindqvist


Video Answer


2 Answers

A batch-update are several insert/update/delete statements which are processed by the database together. This is usualy done for perfomance reasons. 1x 1000 inserts is much faster than 1000x 1 insert. A BatchUpdateException means 1 (or more) statements failed most often due to a constraint-violation. You will have to look at the stored procedure to see what it has been doing. Mayby your dba can give you more information about what went wrong.

like image 35
tjin Avatar answered Sep 28 '22 09:09

tjin


I'd interpret the message as meaning that an SQL statement that you added via addBatch() has produced a ResultSet, meaning that it's not your normal INSERT, UPDATE or DELETE statement.

Statements that should return results can't be executed in batches with JDBC.

The JDBC Tutorial (under the heading "Handling Batch Update Exceptions") confirms it:

You will get a BatchUpdateException when you call the method executeBatch if (1) one of the SQL statements you added to the batch produces a result set (usually a query) or (2) one of the SQL statements in the batch does not execute successfully for some other reason.

You seem to be running into case 1 here.

like image 102
Joachim Sauer Avatar answered Sep 28 '22 08:09

Joachim Sauer