|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
Bonjour,
je fais une insertion massive de données dans trois tables par le biais d'une boucle while Le problème, c'est que chaque fois entre 500 et 2000, la boucle plante, avec différentes erreurs : java.sql.SQLException: Resultset is closed java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 ou des fois un truc avec getResultset... Vu que la boucle fonctionne très bien au début, je me demande d'ou proviennent ces erreurs, surtout que je fonctionne en try/catch, et que je suis sur que ces erreurs ne sont pas déclenchées par ce biais. Y a pas quelque chose à faire avec les resultset au niveau mémoire? les vider? augmenter le heap? Ou alors ca vient pas du tout de la? Quelqu'un a une idée? Merci |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
J'ai l'impression (je suis pas sur) que ca vient d'une requete SELECT effectuée bon nombre de fois, sur une table vide, donc le resultset est vide.
Ca craint pas normalement non? |
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Il se pourrait bien que tu atteignes la valeur du timeout assigné pour une requête à la base de données. Du coup, tu planterais. Puisque tu fais des insertions massives, regarde si possible si le moteur SQL ne créerait pas un index temporaire à chaque itération, ce qui pourrait augmenter exponentiellement la durée des requêtes.
|
|
|
00
|
|
|
#4 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
donc si je te suis, en faisant un setQueryTimeout(un gros chiffre en ms), sur mon statement, ca devrait résoudre le problème;
Mais ca ne marche pas. Comment savoir si ce moteur crée un index? et comment le virer? merci |
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
je remarque qu'en ajustant le timeout, la boucle va plus loin, donc ta surement raison, mais je trouve pas grand chose sur le sujet sur la toile.
Help please! |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Inscription : novembre 2004 Messages : 1 298 ![]() |
Tu es sur quelle version de DB2 ?
|
|
|
00
|
|
|
#7 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
9.5.0.808
|
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
J'ai aussi remarqué que le processus db2syscs monte jusqu'à 950mo, et à chaque fois quil dépasse cette limite, ca plante
|
|
|
00
|
|
|
#9 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
Non en fait, il monte encore, + de 1Go, c pas très normal ca quand même, un soft de cette trempe n'est pas mieux fait que ca...
|
|
|
00
|
|
|
#10 |
|
Membre habitué
![]() Développeur informatique Inscription : avril 2008 Messages : 410 ![]() |
Bon, j'ai failli escamper le pc par la fenetre, mais j'ai trouvé :
ca venait de ma class watch_connection, qui sert à verifier la connectivité en envoyant une requete neutre sur une table test, syncronisé sur un timer. Et comme j'ai pas fait de thread séparé, et que j'utilise les memes resultset, ca me fesait planter!!! tout ca pour ca... merci pour votre aide @ bientôt |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com