Il semblerait que l'auto-commit ai un problème avec proxool
J'utilise le driver jdbcodbc / odbc pour SQLServer.
Avec le petit bout de code tout bête comme ça :
Code :
- Connection c = getConnection();
- Statement s = c.createStatement();
- ResultSet r = s.executeQuery(m_sql);
- while (r.next())
- list.add(r.getString(1));
- // TODO faire une fermeture correcte
- r.close();
- s.close();
- c.close();
|
Tout semble bien se passer, mais dès que je cherche à accèder a une connexion du pool, je me mange l'erreur suivante :
GRAVE: #0001 encountered errors during destruction: java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]État de transaction non valide |
Par contre, si je règle l'auto-commit à "false" (ajout de c.setAutoCommit(false), le problème disparait. C'est d'autant plus étonnant que ça ne se produit pas uniquement dans le cas d'écriture en base de données (cf mon exemple) : en lecture, on n'est pas censé faire de commit de toute manière !
Bref, si je doit ajouter des setAutoCommit de partout, ça risque d'être assez chiant, et puis j'aimerai comprendre.
Je précise qu'auparavant j'utilisais protomatter comme pool de connexions, et que je n'ai jamais rencontré ce genre de pb, donc cela ne vient ni de mon Odbc, ni du Jdbc (on s'en doute).
Je n'ai pas d'autre driver / base de données sous la main, si qqn a déja rencontré ce problème avec proxool, ou est tenté par un petit test, ça m'interresse.
a+