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

JDBC Java Discussion :

[POSTGRESQL] Comportement incompris


Sujet :

JDBC Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 90
    Points : 62
    Points
    62
    Par défaut [POSTGRESQL] Comportement incompris
    Bonjour à tous,

    J'utilise un driver jdbc pour postgresql (postgresql-8.3-604.jdbc4.jar) avec mon appli java. Mon but est de charger (executer) des fichiers .sql au démarrage de l'application pour pouvoir appeler des fonctions sur la base de données juste en appelant SELECT my_function() quand l'utilisateur le désire. Pour la petite précision, ces fichiers ne contiennent que des CREATE FUNCTION.

    Pour l'instant, je ne travaille que sur un seul fichier. Mon fichier se charge correctement mais j'ai un problème. Une fois que j'ai appelé une première fois la fonction main de ce fichier, la deuxième fois plante mais sans réelle raison.

    J'ai donc essayé de rappeler la fonction (sans recharger le fichier) en utilisant pgAdmin III et là impossible de reproduire l'erreur : je peux appeler autant de fois que je veux la fonction juste en faisant 'SELECT my_function'.

    Voici le bout de code (quelques commentaires en moins) qui plante lors de la deuxième exécution et son log d'errors associé :

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    CREATE OR REPLACE FUNCTION tools.ver_proj_init_declaration() RETURNS void as $$
    DECLARE
    BEGIN
     
    	DROP SCHEMA IF EXISTS verproj CASCADE;
    	CREATE SCHEMA verproj;
     
    	SET search_path TO verproj,tools,pg_catalog, public;
     
    	-- init VER_PROJ_REPORT 
    	CREATE TABLE  verproj.VER_PROJ_REPORT (line_nb INTEGER,report_line VARCHAR);
     
    	CREATE TABLE VER_TIME_REPORT (line_nb INTEGER, prof_nb INTEGER, coltext VARCHAR, coltime VARCHAR);
     
    	CREATE TABLE verproj.MyGlobalVar_TBL(line_nb        INTEGER, prof_nb        INTEGER);
     
    	CREATE TABLE verproj.MyGVar_TBL(card           INTEGER,
    	                        card_head      INTEGER,
    	                        diag_index     INTEGER,
    	                        direct_dic_max INTEGER,
    	                        eq_index       INTEGER,
    	                        line_nb        INTEGER,
    	                       nb_of_pages    INTEGER,
    		                        out_text       VARCHAR,
    		                        simdru_dic_max INTEGER,
    		                        simple_dic_max INTEGER);
     
     
     
    	INSERT INTO verproj.MyGlobalVar_TBL VALUES ( 0  /* line_nb */,
    					    1  /* profondeur */);
     
    	-- init My_GVar_TBL : Table of global variables necessary
    	INSERT INTO verproj.MyGVar_TBL VALUES 														( 0   /* card */,
    		                                0   /* card_head */,
    		                                1   /* diag_index */,
    		                                0   /* direct_dic_max */,
    		                                0   /* eq_index */,
    		                                0   /* line_nb */,
    		                                0   /* nb_of_pages */,
    		                               ''   /* out_text */, 
    		                                0   /* simdru_dic_max */,
    		                                0   /* simple_dic_max */);
    [...]
    	return;
    	END; 
    $$ LANGUAGE plpgsql;
    En regardant dans le fichier de log de postgreSQL, il me dit qu'il plante sur le dernier INSERT de la function :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    2009-02-23 11:02:46 GMT ERREUR:  la relation « mygvar_tbl » n existe pas
    2009-02-23 11:02:46 GMT CONTEXTE :  instruction SQL « INSERT INTO MyGVar_TBL VALUES ( 0 , 0 , 1 , 0 , 0 , 0 , 0 , '' , 0 , 0 ) »
    	PL/pgSQL function "ver_proj_init_declaration" line 40 at SQL statement
    	instruction SQL « SELECT  ver_proj_init_declaration() »
    Voilà j'espère avoir été claire.
    Je suis incapable de comprendre d'où ça vient. Sachant que si je charge le fichier directement dans postgresql sans passer par l'appli, le même comportement se produit...

    Si l'un d'entre vous aurait une piste ou une vague idée, je suis toute ouïe.

    Merci beaucoup & bonne journée

  2. #2
    Membre régulier Avatar de Buch'
    Inscrit en
    Avril 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 61
    Points : 73
    Points
    73
    Par défaut
    ne te manque-t-il pas une ( ouvrante dans la requête INSERT INTO verproj.MyGVar_TBL VALUES ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 90
    Points : 62
    Points
    62
    Par défaut
    Oops c'est malheureusement une erreur de copy paste dans le post

    Merci tout de même Buch' pour l'observation

  4. #4
    Membre régulier Avatar de Buch'
    Inscrit en
    Avril 2005
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 61
    Points : 73
    Points
    73
    Par défaut
    Je te poste un lien vers un autre sujet qui traite à priori du même message d'erreur concernant le fait que la relation n'existe pas. As-tu essayé en créant tes tables avec des noms en minuscule pour voir si cela change quelquechose ?

    http://www.developpez.net/forums/d62...oes-not-exist/

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    90
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 90
    Points : 62
    Points
    62
    Par défaut
    Alors effectivement en plein dans le mille ! Si j'avais su que l'erreur était aussi simple...

    Merci beaucoup Buch'

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

Discussions similaires

  1. [MySQL -> PostGreSQL] Migration
    Par Nepomiachty Olivier dans le forum Administration
    Réponses: 9
    Dernier message: 23/04/2010, 16h33
  2. [Kylix] PostgreSql via ODBC
    Par doykati dans le forum EDI
    Réponses: 3
    Dernier message: 08/02/2007, 10h10
  3. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33
  4. Réponses: 4
    Dernier message: 28/09/2002, 00h00
  5. Réponses: 2
    Dernier message: 30/05/2002, 08h54

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