IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

Creation de base de donnée


Sujet :

PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Par défaut Creation de base de donnée
    Bonjour à tous,

    je souhaite créer un script postgresql qui me permettra de créer ma base de donnée, les tables et les schéma associés.

    Voici le début de mon script :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    DROP DATABASE IF EXISTS pfr;
     
    CREATE DATABASE pfr WITH TEMPLATE = template0 ENCODING = 'UTF8';
     
    CREATE USER pfr_usr;
    ALTER DATABASE pfr OWNER TO pfr_usr;
     
    SET client_encoding = 'UTF8';
    SET standard_conforming_strings = off;
    SET check_function_bodies = false;
    SET client_min_messages = warning;
    SET escape_string_warning = off;
    SET search_path = public, pg_catalog;
    SET default_tablespace = '';
    SET default_with_oids = false;
     
     
    ?????????????????
     
     
    CREATE SEQUENCE component_seq
        INCREMENT BY 1
        NO MAXVALUE
        NO MINVALUE
        CACHE 1;
     
    ALTER TABLE public.component_seq OWNER TO pfr_usr;
     
    CREATE TABLE component (
        id_component integer DEFAULT nextval('component_seq'::regclass) NOT NULL,
        id_component_type integer NOT NULL,
        component_name character varying(50) NOT NULL
    );
     
    ALTER TABLE public.component OWNER TO pfr_usr;
     
    ...
    Le script se déroule bien mais les tables ne sont pas créées dans la BDD pfr, je pense qu'il manque un CONNECT ou un truc du genre...

    Merci.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Si le script est destiné à psql, la commande pour se connecter est \c suivi du nom de la base.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Par défaut
    Merci de m'avoir répondu.

    Non c'est un script qui me permet d'installer un context pour réaliser des test sur des classes DAO :

    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
    22
     
    @Test
    	public void testCreateDDL() throws Exception {
    		HibernateEntityManager em = null;
    		Connection con = null;
    		try {
    			em = (HibernateEntityManager) emf.createEntityManager();
    			con = em.getSession().connection();
    			String query = this.loadQuery();
    			PreparedStatement statement = con.prepareStatement(query);
    			statement.execute();
    			con.commit();
    			con.close();
    		} finally {
    			if (null != con && !con.isClosed()) {
    				con.close();
    			}
    			if (null != em && em.isOpen()) {
    				em.close();
    			}
    		}
    	}
    ça c'est le code qui exécute les requêtes présents dans le fichier. J'ai testé avec /c pfr mais il y a une exception :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    org.postgresql.util.PSQLException: ERROR: syntax error at or near "\"
      Position*: 1
    	at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
    	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
    	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
    	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:381)
    	at com.sopra.tuto.dao.InitDBPfr.testCreateDDL(InitDBPfr.java:59)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
    	at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
    	at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
    	at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
    	at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
    	at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
    	at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
    	at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    	at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
    	at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    	at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    	at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
    	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:49)
    	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
    Peut tu m'aider?? Merci

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Par défaut
    Si le problème est juste de se reconnecter, je pense que la solution serait de découper le script en deux (1: création de la base, 2: création des objets de la base) et de se connecter entre les deux à la base nouvellement créée. Car on ne peut pas changer de connexion en SQL de l'intérieur d'une connexion déjà ouverte.

    Ceci étant il y a quelque chose qui m'échappe dans le bout de programme Java, c'est la logique qui découperait le script instruction par instruction. Car j'imagine assez mal qu'on passe tout un script à prepareStatement(). Mais je peux me tromper, je ne pratique pas Java.

  5. #5
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Par défaut
    Dans ce contexte ci, si!! Je passe tout le script sous forme d'un string au prepareStatement qui exécute le tout.

    J'avais aussi pensé à découper le script en deux mais je pensais que l'on pouvait le faire directement dans le script.

    En tout cas merci d'avoir participé à la résolution de mon problème.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 101
    Par défaut
    Sinon il y a une autre solution!!

    A la place de faire un drop sur la base de donnée, je fais juste un drop sur le schéma en cascade, ce qui supprime toutes les tables et les séquences. Ensuite je recréé le schéma et je peux ajouter mes tables!!

    Comme ça aucune connexion et déconnexion de base de donnée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. creation de base de données oracle
    Par fatib dans le forum Oracle
    Réponses: 1
    Dernier message: 12/07/2007, 15h53
  2. [MySQL] [Creation Messagerie] Base de donnée ou serveur Mail
    Par Gwen38 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/05/2007, 14h39
  3. VB6 et ADO creation de base de données
    Par thierry007 dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/08/2006, 08h43
  4. creation de base de données
    Par superalex_22 dans le forum JDBC
    Réponses: 6
    Dernier message: 07/03/2006, 11h51
  5. Creation de base de donnée Aidez moi S.V.P
    Par MHD dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 24/07/2005, 10h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo