Ich habe Sicherung auf Datenbank auf verschiedene Server und das hat andere Rolle, als ich brauche, mit diesem Befehl:Postgresql - Backup-Datenbank und Wiederherstellung auf anderen Besitzer?
pg_dump -Fc db_name -f db_name.dump
Dann ich ein Backup auf einem anderen Server kopiert, in dem ich die Datenbank wiederherstellen müssen, aber es gibt keine solche Besitzer, der für diese Datenbank verwendet wurde. Nehmen wir an, die Datenbank hat Besitzer owner1
, aber auf einem anderen Server habe ich nur owner2
und ich muss diese Datenbank wiederherstellen und Besitzer ändern.
Was ich auf einem anderen Server hat bei der Wiederherstellung:
createdb -p 5433 -T template0 db_name
pg_restore -p 5433 --role=owner2 -d db_name db_name.dump
Aber wiederherstellen, wenn ausgeführt wird, erhalte ich diese Fehler:
pg_restore: [archiver (db)] could not execute query: ERROR: role "owner1" does not exist
Wie kann ich es angeben, so würde es Besitzer ändern? Oder ist es unmöglich?
'pg_dump --no-owner' sollte auch tun es –
Meine Präferenz diese Art von Entscheidungen, bis die Wiederherstellung zu verschieben ist. Wenn Sie es in der Dump-Phase tun, bedeutet dies, dass Sie Ihre Meinung nicht ändern können, ohne den Export durchzuführen. Wenn Sie dies bei der Wiederherstellung tun, bleiben Optionen offen, falls Sie sich entscheiden, dass Sie diese fehlende Rolle wirklich erstellt haben sollten. – Gary
Also, wenn ich den Besitzer wechseln möchte, muss ich ohne Besitzer sichern? Weil ich dachte, ich könnte den Besitzer beim Wiederherstellen ändern. Aber selbst wenn ich "--role" auf einen anderen Besitzer setzte, versuchte es immer noch den ursprünglichen Besitzer zu benutzen (aber dann habe ich '--no-owner' nicht benutzt. – Andrius