Vous n'êtes pas identifié(e).

#1 30/01/2012 18:33:37

crdcrd
Membre

copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

Bonjour,

comment puis-je récupérer une base sur un serveur en 9.0.3 pour la recopier sur une base en 8.2.11.
Merci.

Hors ligne

#2 30/01/2012 18:43:38

kenrio
Membre

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

copié une database d'un 9.0.3 vers un 8.2.11 c'est pas un peu dangereux ?
sinon un simple pgdump devrait bien faire l'affaire.

Hors ligne

#3 30/01/2012 18:56:27

gleu
Administrateur

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

Avec un pg_dump de 8.2 ceci dit. Il faudra certainement utiliser l'option -i pour que ça fonctionne. Tous les objets spécifiques aux versions 8.3 et ultérieures ne seront pas pris dans la sauvegarde mais comme ils ne sont pas restaurables sur une 8.2, ça n'est pas grave en soi smile


Guillaume.

Hors ligne

#4 31/01/2012 14:11:35

crdcrd
Membre

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

Bonjour et merci pour vos réponses. Pour info, je suis sur Windows.

J'ai effectivement essayé depuis le serveur en Version 8 de faire un pg_dump avec l'option -i mais ça ne fonctionne pas.
pg_dump.exe -i -h serveuren9 -p 5432 -U postgres  -f fichier.backup <nomdelabase>

pg_dump: server version: 9.0.3; pg_dump version: 8.2.11
pg_dump: proceeding despite version mismatch
pg_dump: SQL command failed
pg_dump: Error message from server: ERREUR:  la colonne ┬½ reltriggers ┬╗ n'exis
te pas
LINE 1: ...oles WHERE oid = relowner) as rolname, relchecks, reltrigger...
                                                             ^
pg_dump: The command was: SELECT c.tableoid, c.oid, relname, relacl, relkind, re
lnamespace, (SELECT rolname FROM pg_catalog.pg_roles WHERE oid = relowner) as ro
lname, relchecks, reltriggers, relhasindex, relhasrules, relhasoids, d.refobjid
as owning_tab, d.refobjsubid as owning_col, (SELECT spcname FROM pg_tablespace t
WHERE t.oid = c.reltablespace) AS reltablespace, array_to_string(c.reloptions,
', ') as reloptions from pg_class c left join pg_depend d on (c.relkind = 'S' an
d d.classid = c.tableoid and d.objid = c.oid and d.objsubid = 0 and d.refclassid
= c.tableoid and d.deptype = 'a') where relkind in ('r', 'S', 'v', 'c') order b
y c.oid

Hors ligne

#5 31/01/2012 15:33:57

gleu
Administrateur

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

Yep, c'était un problème auquel j'aurais dû penser. Il n'existe donc pas trop de solutions, à part utiliser le pg_dump de la 9.0, qui ne se restaurera pas facilement sur un 8.2. Sauvegarde texte obligatoire car il y a de fortes chances qu'il faille modifier certaines requêtes. Bon courage pour la suite :-/


Guillaume.

Hors ligne

#6 31/01/2012 15:51:29

crdcrd
Membre

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

Bon, je vous dirai comment je vais réussir à m'en sortir (suis optimiste)...
Sinon, pour la suite, que me conseilleriez-vous pour migrer mes clusters de bases sur mon serveur windows avec postgres 8.2 vers postgres 9.0.3. pgupgrade ou autres...???
Merci.

Hors ligne

#7 31/01/2012 16:12:27

gleu
Administrateur

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

Si c'est pour aller de la 8.2 vers la 9.0, ça doit être bien plus simple. Vous utilisez le pg_dump de la version 9.0, qui devrait pouvoir sauvegarder une base de 8.2. Et ensuite le pg_restore de la 9.0. C'est l'autre sens qui est complexe.


Guillaume.

Hors ligne

#8 31/01/2012 20:59:26

cedric
Membre

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

il est toujours possible de se baser sur sur un système de réplication comme slony pour migrer entre versions, dans les deux sens.


Cédric Villemain +33 (0)6 20 30 22 52
http://2ndQuadrant.fr/
PostgreSQL: Support 24x7 - Développement, Expertise et Formation

Hors ligne

#9 02/02/2012 18:08:56

crdcrd
Membre

Re : copie d'une base en 9.0.3 sur un moteur postgresql en 8.2.11

Je m'en suis sortie en ne faisant un export que du schéma à récupérer en mode plain, et j'ai récupéré sur mon serveur de destination en postgresql 8.2 par la commande suivante :
psql.exe -f "mon-fichier-export-en-mode-plain-postgre9.sql" -p <port> -h localhost <labase-destination> <le-user>

Merci à tous.
Chrystèle.

Hors ligne

Pied de page des forums