web-dev-qa-db-fra.com

Postgresql - sauvegarde de la base de données et restauration sur un propriétaire différent?

J'ai sauvegardé sur une base de données sur un serveur différent et qui a un rôle différent de celui dont j'ai besoin avec cette commande:

pg_dump -Fc db_name -f db_name.dump

Ensuite, j'ai copié la sauvegarde sur un autre serveur sur lequel je dois restaurer la base de données, mais aucun propriétaire de ce type n'a été utilisé pour cette base de données. Disons que la base de données a le propriétaire owner1, mais sur un serveur différent, je n'ai que owner2 et j'ai besoin de restaurer cette base de données et de changer de propriétaire.

Ce que j'ai fait sur un autre serveur lors de la restauration:

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump

Mais lorsque la restauration est exécutée, j'obtiens ces erreurs:

pg_restore: [archiver (db)] could not execute query: ERROR:  role "owner1" does not exist

Comment puis-je le spécifier pour qu'il change de propriétaire? Ou est-ce impossible?

59
Andrius

Vous devez utiliser l'option --no-owner, Ceci arrête pg_restore D'essayer de définir la propriété des objets sur le propriétaire d'origine. Au lieu de cela, les objets seront possédés par l'utilisateur spécifié par --role

createdb -p 5433 -T template0 db_name 
pg_restore -p 5433 --no-owner --role=owner2 -d db_name db_name.dump

pg_restore doc

91
Gary