Question

J'obtiens cette BatchUpdateException d'une déclaration stmt.executeBatch ():

BatchUpdateException: A resultset was created for update

L'Internet ne dispose pas d'informations sur ce message d'exception. Qu'est-ce que ça veut dire? Le retraçage ne contient rien d'utile autre que celui de l'échec de la procédure stockée.

Était-ce utile?

La solution

J'interprète le message en ce sens qu'une instruction SQL que vous avez ajouté via addBatch() a produit un ResultSet, ce qui signifie que ce n'est pas votre déclaration normale INSERT, UPDATE ou DELETE.

Les déclarations qui doivent renvoyer des résultats ne peut être exécuté par lots avec JDBC.

JDBC Tutoriel (sous la rubrique "Gestion des exceptions Mise à jour batch") confirme il:

Vous obtiendrez un BatchUpdateException lorsque vous appelez la méthode executeBatch si (1) l'une des instructions SQL ajoutées au lot produit un jeu de résultats (généralement une requête) ou (2) l'une des instructions SQL dans le lot ne pas exécuter avec succès pour une autre raison.

Vous semblez être en cours d'exécution dans le cas 1 ici.

Autres conseils

A-mise à jour batch différentes insertion / mise à jour / états de suppression qui sont traitées par la base de données en même temps. Ceci est usualy fait pour des raisons de perfomance. 1x 1000 inserts est beaucoup plus rapide que 1000x 1 insert. Un BatchUpdateException signifie 1 déclarations (ou plus) le plus souvent échoué en raison d'une contrainte-violation. Vous devrez regarder la procédure stockée pour voir ce qu'il a fait. Mayby votre dba peut vous donner plus d'informations sur ce qui a mal tourné.

Je laissé tomber une colonne de la table. Lorsque j'ai essayé d'insérer des enregistrements à cette table que je recevais BatchUpdateException.

Après avoir exécuté le problème ci-dessous commande le se est résolu

REORG TABLE TABLE_NAME

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top