Hello,
Je développe une appli avec laquelle je me connecte à postgresql via. JDBC. Pour ce faire j'utilise le driver téléchargeable ici de la manière suivante:
J'ai un petit poblème: je n'arrive a executer aucune des commandes qui contiennent un \. J'ai réussi à m'en passer pour lister les DB, mais pour l'execution d'un script je ne vois pas comment faire... Mon script est supposé créer la base, l'ensemble des tables, des contraintes, des indexes etc... Bref un script de création quoi... Voici le bout de code d'interêt
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 PGPoolingDataSource pool = new PGPoolingDataSource(); pool.setServerName(dbParams.ip); pool.setDatabaseName(dbParams.dbName); pool.setUser(dbParams.user); pool.setPassword(dbParams.password); pool.setMaxConnections(20);
J'obtient alors systématiquement l'exception suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Connection c = pool.getConnection() ; Statement stmt = c.createStatement() ; try { stmt.execute("CREATE DATABASE " + dbName+" WITH OWNER = \""+user+"\""); } catch(SQLException e) { if(e.getMessage().contains("already exists")) { stmt.execute("DROP DATABASE " + dbName); stmt.execute("CREATE DATABASE " + dbName+" WITH OWNER = \""+user+"\""); } else throw e ; } stmt.execute("CREATE DATABASE " + dbName+" WITH OWNER = \""+user+"\""); // Execute creation script stmt.execute("\\i "+SCRIPT_PATH+"create_db.sql"); stmt.close(); m.close();
Quelqu'un a-t-il une idée ?org.postgresql.util.PSQLException: ERROR: syntax error at or near "\"
Position: 1
at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353)
at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:345)
Merci d'avance!
Partager