OVH Cloud OVH Cloud

Créer une base postgreSQL

4 réponses
Avatar
Jean-Luc M.
Salutatous

Je débute un peu avec java et JDBC.

Je cois créer une classe qui puisse créer une base sur un serveur
PostgreSQL 8.0 avec JDBC.
Pour ça, j'ai vu qu'il faut créer un connection sur une base existante
pour ensuite utiliser une commande sql CREATE DATABASE.

Problème : Si on vient juste d'installer postgreSQL et qu'on n'y a
créer aucune base, on se connecte à quoi ? ou comment ?

J'ai tenté une connection sur la base template1, mais au moment de
l'execution , je ramasse une erreur me disant que template est déjà
utilisée (accessed) par un autre utilisateur.

L'un d'entre vous pourrait-il me donner un semblant de solution ?

Jean-Luc M.

--
Jean-Luc M.

4 réponses

Avatar
Alain
Je cois créer une classe qui puisse créer une base sur un serveur
PostgreSQL 8.0 avec JDBC.
Problème : Si on vient juste d'installer postgreSQL et qu'on n'y a créer
aucune base, on se connecte à quoi ? ou comment ?


dans le temsp j'ai travaillé avec Postgresql
et je me souvient qu'il faut bosser avec pgAdmin
(à télécharger je crois, indépendemment de postgres)

Avatar
Eric Jacoboni
"Jean-Luc M." writes:

Problème : Si on vient juste d'installer postgreSQL et qu'on n'y a
créer aucune base, on se connecte à quoi ? ou comment ?


PostgreSQL est livré avec un client en mode texte : pgsql

Après, il existe des clients graphiques.

<http://www.postgresql.org/docs/manual/> est sûrement un bon point de
départ.

Comme cela est plus adapté à une discussion sur les bases de données
que sur Java proprement dit, je fais suivre dans le bon groupe.

--
Éric Jacoboni, né il y a 1414021238 secondes

Avatar
Jean-Luc M.

dans le temsp j'ai travaillé avec Postgresql
et je me souvient qu'il faut bosser avec pgAdmin
(à télécharger je crois, indépendemment de postgres)



Je sais que pgadmin permet de manipuler les bases et les tables mais ce
n'est pas mon problème.

J'ai expliqué que je veux créer une base uniquement avec du code java.
La situation est la suivante:
Un client installe PostgreSQL et NE CREE PAS de base.

Ensuite, le programme java que je crèe doit comporter une classe qui
utilise JDBC et qui puisse créer une base automatiquement sans
intervention de l'utilisateur.

D'où le code suivant:

Connection connection = null;
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection("JDBC:postgresql:" + base,
userName, userPassword);
String tableToCreate = "CREATE DATABASE " + baseName;
statement.execute(tableToCreate);
conn.commit();

Mais puisqu'aucune base n'existe encore sur le SGBD, je mets quoi dans
la variable base ??
La seule base existante après installation postgre, c'est la base
template1.
Mais si je l'utilise je ramasse une erreur me disant:

java.sql.SQLException: ERROR: source database "template1" is being
accessed by other users
at
org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1471)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1256)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:175)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:388)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:313)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:305)réussi

Donc, soit je m'y prends mal, soit la base template est innaccessible
pour ce genre de chose.

--
Jean-Luc M.

Avatar
Alex Marandon
On 2005-03-12, Jean-Luc M. wrote:
La seule base existante après installation postgre, c'est la base
template1.
Mais si je l'utilise je ramasse une erreur me disant:

java.sql.SQLException: ERROR: source database "template1" is being
accessed by other users
[...]

Donc, soit je m'y prends mal, soit la base template est innaccessible
pour ce genre de chose.


C'est bizarre, ici avec psql, ça fonctionne :

template1=# CREATE DATABASE plop;
CREATE DATABASE
template1=# DROP DATABASE plop ;
DROP DATABASE

Tu as essayé directement avec psql pour voir si c'est un problème
spécifique à Java ?