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 27/10/2016 14:09:14

Geo-x
Membre

Problème d'utilisation du pg_restore

Bonjour @ tous.

Ok, le sujet fait légèrement doublon avec mon dernier post mais promis, le contenu est différent, je m'explique.

Je tente de mettre en place une restauration de backup dans ma base de données.

Je souhaiterais que cette restauration, crée la BDD si elle n'existe pas ou la remplace si elle existe.

Alors j'ai testé mais en vain, j'ai testé ça :

pg_restore -h localhost -p 5432 -U postgres -C -d bdd_provisoire D:\mybackup.backup

Mais là j'ai "bdd_provisoire does not exist"

pg_restore -C -d bdd_provisoire -w D:\mybackup.backup

Mais là j'ai "fe_sendauth: no password supplied"

Auriez-vous une idée sur la façon de procéder ?

Par avance merci.

Geo-x

Dernière modification par Geo-x (27/10/2016 14:09:25)

Hors ligne

#2 27/10/2016 14:38:30

rjuju
Administrateur

Re : Problème d'utilisation du pg_restore

Bonjour,

À quoi correspod bdd_provisoire exactement ? si pas "remplacer" vous voulez supprimer la base et en recréer une nouvelle cette commande devrait marcher :

pg_restore -C -c --if-exists -d base_existante D:\mybackup.backup

Vous avez utilisé -w qui demande explicitement à ne pas demander de mot de passe, quitte à sortir en erreur. Je suppose que votre environnement fait qu'en omettant le -h et/ou -p et/ou -U, une autre méthode d'authentification est choisie, qui elle demande un mot de passe (ou votre fichier pgpass ne contient pas la bonne entrée si ces options ne sont pas présentes).

Hors ligne

#3 27/10/2016 14:45:19

Geo-x
Membre

Re : Problème d'utilisation du pg_restore

Encore et toujours là Julien et une nouvelle fois merci de votre aide.

"bdd_provisoire" correpond au nom que je souhaite donner à la nouvelle BDD, j'aurais aussi pu mettre "choux-fleurs".

Si cette BDD existe déjà alors la remplacer. J'ai déjà testé avec "--if-exists" mais j'ai en retour le message :

illegal option --if-exists

(Je suis en version 9.1.9 de Postgres).

Alors j'ai utilisé -w dans l'objectif justement qu'il ne me demande pas de mot de passe étant donné que je lance cette commande en "Off" ou invisible pour l'utilisateur, il ne me faut donc pas de message de ce genre.

Je vais tester en ajoutant/enlevant les options  "-h et/ou -p et/ou -U" voir ce que ça peut donner...

Hors ligne

#4 27/10/2016 15:28:52

rjuju
Administrateur

Re : Problème d'utilisation du pg_restore

L'option a été ajoutée en 9.4.  Au sujet de votre version, vous avez quand même 14 versions mineures de retard, soit un peu plus de 3 ans de retard sur les failles de sécurité et les bugs. De plus la version 9.1 sera obsolète d'ici cet après midi.


Concernant votre problème, vous souhaitez restaurer la sauvegarde d'une base, disons production, dans une autre base, disons test, et que si la base test n'existe pas créer cette base ?

Je ne pense pas qu'il soit possible de le faire en une seule étape, je vous conseillerai plutôt:

psql -AXtc "DROP DATABASE IF EXISTS nouveau_nom"
psql -AXtc "CREATE DATABASE nouveau_nom"
pg_restore -d nouveau_nom D:\mybackup.backup

(et bien entendu de vérifier le code retour de chaque commande avant de passer à la suite)

Hors ligne

#5 28/10/2016 12:09:33

Geo-x
Membre

Re : Problème d'utilisation du pg_restore

Merci pour l'information Julien (concernant la dépréciation de la version 9.1).

Concernant mon problème vous m'avez parlé, dans votre avant-dernier post du fichier "pgpass".
Je suis donc allé voir de ce côté-là et en lisant la documentation j'ai compris qu'il fallait que j'indique, suite à la table destination les options -h -p -U.
A partir de là, j'ai utilisé le code proposé dans votre dernier post et cela fonctionne à merveille !

Un grand merci pour votre aide.

Geo-x

Hors ligne

Pied de page des forums