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?
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