PostgreSQL
La base de données la plus sophistiquée au monde.

Ouverture de session

Navigation

Contactez-nous

Administration du site :
"equipe chez postgresqlfr point org"

Contact presse :
"fr chez postgresql point org"

Contact association :
"bureau chez postgresqlfr point org"

Questions PostgreSQL :
 IRC :
  serveur irc.freenode.net
  canal #postgresqlfr

Recherche

Accéder aux archives

« Octobre 2008  
Lun Mar Mer Jeu Ven Sam Dim
  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  

Syndication

Flux XML

Sondage

Quelle est la version de PostgreSQL la plus répandue sur vos serveurs ?
8.3
10%
8.2
42%
8.1
40%
8.0
2%
7.4
6%
7.3 ou antérieure
0%
Nombre de votes: 48

Importer un dump 7.4 vers 8.

Technique - général | Importer un dump 7.4 vers 8.

Par nono1980 le 28/09/2007 - 09:33

c'est mon premier message ici!

c'est aussi la première fois que j'ai à me confronter à postgresql! j'aurais aimé avoir des avis/conseils/mise en garde. En effet j'ai un dump d'une base de données construite en postgresql 7.4. Or je dois la passer sous postgresql 8.2 (la dernière).

je suis sous ubuntu, j'ai donc installé les paquets postgresql 8.2 et phppgadmin. Mise à part le fait que je n'arrive pas à accéder à phppgadmin (l'installeur n'a pas crée de repertoire phppgadmin dans mon /var/www) bref, mise à part cela, je n'arrive pas à importer ma BDD en 8.21.

J'ai donc essayer en 7.4 et là ça passe sans problème... par quel procédé puis je arriver à mes fins s'il vous plait?

merci de votre intérêt!

Options d'affichage des commentaires

Sélectionnez la méthode d'affichage des commentaires que vous préférez, puis cliquez sur "Sauvegarder les paramètres" pour activer vos changements.

Merci d'indiquer les messages

Guillaume Lelarge/ = 28 Septembre, 2007 - 23:30

Merci d'indiquer les messages d'erreur. Sans cela, on ne peut faire que de vagues suppositions...

--
Guillaume Lelarge.
Administrateur de bases de données
http://dalibo.com - http://dalibo.org


merci

nono1980/ = 1 Octobre, 2007 - 14:28

il semblerait que j'ai enfin réussi, mais à présent mon PHP5 me répond :

CONTEXT: instruction SQL INSERT INTO utilisateur(uti_nom,uti_prenom,uti_login,uti_pass,uti_mail,uti_actif,sta_id,uti_date_insert,uti_date_update,uti_user_update,uti_user_insert) VALUES ( $1 , $2 , $3 , $4 , $5 ,'t', $6 ,'now','now', $7 , $7 )» PL/pgSQL function "insertutilisateur" line 16 at SQL statement in /var/www/.../ on line 30

lorsque je tente un enregistrement


mais l'erreur ?

SAS/ = 1 Octobre, 2007 - 14:59

Quelle est l'erreur, au delà du contexte ?

Librement,
Stéphane Schildknecht
dalibo
PostgreSQLFr


contexte : je dois migrer une

nono1980/ = 1 Octobre, 2007 - 15:53

contexte : je dois migrer une IHM intranet vers du postgresql 7.4 à 8.2.

J'importe ma base ça se passe bien, mais à présent lorsque je tente de me servir de l'IHM notamment lors des enregistrements ça me marque:

La requête a échouée select insertutilisateur('NONO','Nono','nono' ,'c625ade02c3acde8e4d9de57fca78203','nono@nono.com','1','admin') >> ERREUR: INSERT n'est pas autorisé dans une fonction non volatile CONTEXT:


PS

nono1980/ = 1 Octobre, 2007 - 15:57

ps: par contre lors de l'import de mion dump il me marque à un moment:

attention "utilisation non standard de \\ dans une chaine littérale

HINT: Utilisez la syntaxe de chaine d'echapement pour les antislashes c'est à dire E'\\'

c'est important?


Important, oui, grave, non !

SAS/ = 1 Octobre, 2007 - 16:06

Il ya fort à parier que ce qui n'est qu'un message d'avertissement aujourd'hui deviendra une erreur dans une version à venir, dès lors que l'échappement d'antislash sera E'\\' par défaut.

Librement,
Stéphane Schildknecht
dalibo
PostgreSQLFr


Le message est clair ;-)

SAS/ = 1 Octobre, 2007 - 15:58

Visiblement, vous utilisez une fonction en PL/PgSQL qui tente une insertion.

Pour cela, il est obligatoire que la fonction soit définie volatile.

Librement,
Stéphane Schildknecht
dalibo
PostgreSQLFr


oui mais...

nono1980/ = 1 Octobre, 2007 - 16:13

sachant que c'est une appli qui n'est pas la mienne et que je n'ai jamais utiliser les fct postgresql en php pouvez vpus m'en dire plus svp?

volatile?


ça me parait impossible

nono1980/ = 1 Octobre, 2007 - 16:40

je viens de passer ma fonction en VOLATILE mais direct après il me trouve une nouvelle erreur:

la fonction:

DECLARE
_nom ALIAS FOR $1;
_prenom ALIAS FOR $2;
_login ALIAS FOR $3;
_password ALIAS FOR $4;
_mail ALIAS FOR $5;
_idstation ALIAS FOR $6;
_userinsert ALIAS FOR $7;

retval int4:=0;
record1 record;
oid1 int4;

BEGIN

INSERT INTO utilisateur(uti_nom,uti_prenom,uti_login,uti_pass,uti_mail,uti_actif,sta_id,uti_date_insert,uti_date_update,uti_user_update,uti_user_insert)
VALUES (_nom,_prenom,_login,_password,_mail,'t',_idstation,'now','now',_userinsert,_userinsert);

GET DIAGNOSTICS oid1 = RESULT_OID;

FOR record1 IN SELECT uti_id FROM utilisateur where oid = oid1
LOOP
retval := record1.uti_id;
END LOOP;

IF retval is NULL THEN
return -1; END IF;

IF retval < 1 THEN
return 0; END IF;

return retval;
END;

Propriétés
VOLATILE
CALLED ON NULL INPUT
SECURITY INVOKER

erreur:

La requête a échouée select insertutilisateur('NONO','Nono','nono' ,'c625ade02c3acde8e4d9de57fca78203','nono@nono.com','1','admin') >> ERREUR: la colonne «oid» n'existe pas LINE 1: SELECT uti_id FROM utilisateur where oid = $1 ^ QUERY: SELECT uti_id FROM utilisateur where oid = $1 CONTEXT: PL/pgSQL function "insertutilisateur" line 21 at for over select rows

je pense que je vais abandonner. je ne comprend pas pourquoi migrer semble si difficile sur postgresql


Un peu de refactoring

SAS/ = 1 Octobre, 2007 - 17:23

il se trouve que de nombreuses choses ont évolué depuis la version 7.4.

Je pense qu'il va vous falloir vous armez de courage, de patience, de documentations et essayer de tracer les pierres d'achoppement.

L'application de quelques règles de bonnes pratiques vont également être nécessaire.

Fonder un fonctionnement sur des oid, est par exemple, une mauvaise pratique, parce que non portable, et comme c'est ici le cas sujette à problème lors de mises à jour.

Librement,
Stéphane Schildknecht
dalibo
PostgreSQLFr


Volatile

SAS/ = 1 Octobre, 2007 - 16:43

Pour la définition des fonctions volatiles, voir ici :

http://docs.postgresqlfr.org/8.2/xfunc-volatility.html.

Cela signifierait-il que le principe de volatilité des fonctions a été renforcé entre les versions 7.4 et 8.2 ?

Cette fonction passait avant la migration ?

Librement,
Stéphane Schildknecht
dalibo
PostgreSQLFr


oui bien entendu

nono1980/ = 1 Octobre, 2007 - 16:49

oui bien entendu ! c'est la première chose qiue j'ai fait, sur une autre becane j'ai tout reinstallé et importé de apache à postegresql 7.4 etc

-> tout est nickel


© PostgreSQLFr, tous droits réservés.
Site déclaré à la CNIL sous le numéro 1074678, conformément à la Loi en vigueur.