Bonjour!
J'ai une erreur très embetante en utilisant postgresql depuis java : je dois insérer beaucoup de lignes dans une table (environ 200'000) et je rencontre à chaque fois une erreur de type :
org.postgresql.util.PSQLException: FATAL: d?sol?, trop de clients sont d?j? connect?s
Après avoir consulté google et perdu 1 jour et demi sans trouver la cause de mon problème, je me tourne sur le forum...
Ma méthode appelant est définie comme ceci :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| public static void ecritArticle(DAOArticle article){
Properties prop = new Properties();
try {
prop.load(new FileInputStream("config.properties"));
String url = prop.getProperty("url");
Properties props = new Properties();
props.setProperty("user",prop.getProperty("user"));
props.setProperty("password",prop.getProperty("password"));
Connection connection = DriverManager.getConnection(url, props);
Statement st = connection.createStatement();
//requete non originale mais correcte dans le code
String sqlText = "INSERT INTO \"Article\"("\"EAN"\")VALUES ('" + article.getEan() + "')"
logger.info("sql : " + sqlText);
st.execute(sqlText);
st.close();
connection.close();
}
catch (Exception e)
{
logger.error("Erreur ecritArticle()",e);
}
} |
En gros j'ai bien une ouverture de ma connection, mon traitement, et ma fermeture de statement et de connection; mais lors de l'exécution j'obtiens une erreur me signifiant que j'ai trop de clients déjà connectés :
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| org.postgresql.util.PSQLException: FATAL: d?sol?, trop de clients sont d?j? connect?s
at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:293)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:108)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:32)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.connect(Driver.java:267)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ch.accesBD.RechercheBD.getRayonID(RechercheBD.java:165)
at ch.fichiers.LectureFichier.litFichierArticle(LectureFichier.java:386)
at ch.controleur.Controlleur.controleFichier(Controlleur.java:127)
at ch.main.MainProject.main(MainProject.java:88) |
Je ne comprends absolument pas pourquoi alors que j'ai bien mon connection.close() à la fin de mon traitement; tandis que je vois bien dans mes process qu'ils gonflent au fur et à mesure de mes traitements.
J'utilise le driver JDBC4 Postgresql Driver, Version 9.1-901 sur une JVM 1.7.
Merci d'avance pour votre aide!