Domanda

Mi viene questo BatchUpdateException da una dichiarazione stmt.executeBatch ():

BatchUpdateException: A resultset was created for update

L'internet non ha alcuna informazione su questo messaggio di eccezione. Cosa significa? Il traceback non contiene nulla di utile diverso da quello di una stored procedure non riuscita.

È stato utile?

Soluzione

mi piacerebbe interpretare il messaggio nel senso che un'istruzione SQL che si è aggiunto tramite addBatch() ha prodotto un ResultSet, il che significa che non è il vostro normale dichiarazione INSERT, UPDATE o DELETE.

Le dichiarazioni che dovrebbero restituire risultati non può essere eseguito in batch con JDBC.

JDBC Tutorial (sotto la voce "Gestione Batch Aggiornamento eccezioni") conferma esso:

Si otterrà un BatchUpdateException quando si chiama il metodo executeBatch se (1) una delle istruzioni SQL aggiunti al lotto produce un set di risultati (di solito una query) o (2) una delle istruzioni SQL del batch fa non eseguire con successo per qualche altra ragione.

Ti sembra di essere in esecuzione in caso 1 qui.

Altri suggerimenti

Un batch-update sono diversi inserimento / aggiornamento / DELETE che vengono elaborati dal database insieme. Questo è quando arrivavano fatto per motivi perfomance. 1x 1000 inserti è molto più veloce di 1000x 1 inserto. Un BatchUpdateException significa 1 (o più) dichiarazioni non sono riusciti più spesso a causa di un vincolo-violazione. Si dovrà guardare la stored procedure per vedere che cosa sta facendo. Mayby vostro DBA può dare più informazioni su cosa è andato storto.

ho lasciato cadere una colonna della tabella. Quando ho cercato di inserire i record a quel tavolo mi stavo BatchUpdateException.

Dopo aver eseguito il comando sotto il problema risolto ottenuto

REORG TABLE nome_tabella

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top