PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

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

#1 25/02/2021 17:15:48

pg_restore: erreur : une seule des options -d/--dbname and -f/--file p

Bonjour à tous,

Je me suis fait surprendre par un comportement du binaire pg_restore que je n'explique pas :
en version 9.6 : pg_restore me donne le contenu du fichier d'export : je peux le lister et voir le sql contenu
en version 12 (vrai aussi pour la 13) pg_restore ne me donne que la liste (option -l) du fichier d'export, mais je ne peux pas voir le  sql contenu

les doc https://docs.postgresql.fr/12/app-pgrestore.html et https://docs.postgresql.fr/9.6/app-pgrestore.html ne parlent pas de modification de comportement ?

/usr/lib/postgresql/9.6/bin/pg_dump -p 5436 -Fc >96.Fc.dmp  -->ok 
/usr/lib/postgresql/9.6/bin/pg_restore -l 96.Fc.dmp  -->ok 
/usr/lib/postgresql/9.6/bin/pg_restore 96.Fc.dmp     -->ok 

/usr/lib/postgresql/12/bin/pg_dump -p 5435 -Fc >12.Fc.dmp   -->ok 
/usr/lib/postgresql/12/bin/pg_restore -l 12.Fc.dmp    -->ok 
/usr/lib/postgresql/12/bin/pg_restore 12.Fc.dmp   -->Nok
pg_restore: erreur : une seule des options -d/--dbname and -f/--file peut être indiquée

avez-vous une idée ?
merci par avance pour toute aide

Hors ligne

#2 25/02/2021 17:38:52

rjuju
Administrateur

Re : pg_restore: erreur : une seule des options -d/--dbname and -f/--file p

Bonjour,


Il s'agit d'un changement volontaire, et le changement de comportement est documenté bien que subtil :

version 9.6 a écrit :

-f nom_fichier, --file=filename

    Spécifie le fichier en sortie pour le script généré ou pour la liste lorsqu'elle est utilisée avec -l. Utilisez - pour la sortie standard, qui est la sortie par défaut.

version 12 a écrit :

-f nom_fichier
--file=filename

    Spécifie le fichier en sortie pour le script généré ou pour la liste lorsqu'elle est utilisée avec -l. Utilisez - pour stdout.

Notez la différence sur "qui est la sortie par défaut.".  Bref, il vous suffit d'utiliser

pg_restore -f - ...

Hors ligne

#3 25/02/2021 17:51:11

Re : pg_restore: erreur : une seule des options -d/--dbname and -f/--file p

ah oui quand même !  un peu barbu smile

cela fonctionne effectivement

/usr/lib/postgresql/12/bin/pg_restore 12.Fc.dmp -f -

merci ! merci pour cette réponse aussi rapide qu'efficace

Hors ligne

#4 Hier 13:49:49

Re : pg_restore: erreur : une seule des options -d/--dbname and -f/--file p

Bonjour,

C'est à peu près le seul endroit où j'ai trouvé un problème similaire au mien!
Nous avions un ancien Debien 9 / PostgreSQL 9.6, avec une procédure d'import de données exportées depuis un autre site géré par d'autres équipes.
Un beau jour, pg_restore refuse de récupérer l'export :
pg_restore: [archiveur] version non supportée (1.14) dans le fichier d'en-tête

A l'autre bout, ils ont procédé à une montée en version (on ne peut pas leur en vouloir) sans prévenir (on peut leur en vouloir!).

Méthode choisie pour régler le problème : upgrade debian 9 vers 10, puis pg_upgradecluster, puis upgrade debian 10 vers 11, re pg_upgradecluster, et enfin upgrade debian 11 vers 12 et un pg_upgtradecluster pour finir.

Le message d'erreur n'est plus le même, désormais. On a droit à :
pg_restore: erreur : une seule des options -d/--dbname and -f/--file peut être indiquée

Mais on y a droit tout le temps, même en tapant juste au prompt :
pg_upgrade

J'ai loupé une étape?

Je n'ai plus la debian 9.6 d'origine pour vérifier ce que retourne la simple commande :
pg_restore


  Merci,

    Christophe.

Dernière modification par christophe.nouvel (Hier 13:53:14)

Hors ligne

Pied de page des forums