postgres - pg_dump und pg_restore ohne rollen


11

Ich versuche, einen Speicherauszug wiederherzustellen, ohne die entsprechenden Rollen in der empfangenden Datenbank zu haben.

Wie hier, aber auch hier erwähnt , müssen Sie die --no-ownerOption entweder in pg_dumpoder pg_restoreoder in beiden haben

Ich habe die folgende Befehlszeile verwendet, um meinen Speicherauszug zu erstellen

"C:\Program Files\PostgreSQL\9.3\bin\pg_dump.exe" --no-owner -Ft --dbname=postgresql://avo******:AV0******?@127.0.0.1:5432/BI_DB > K:\BI\backup\sort\bck_%timestamp%.tar

Die Wiederherstellungszeile ist wie folgt

"C:\Program Files\PostgreSQL\9.3\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "BI_TEST2" --no-password  --no-owner --role=postgres --exit-on-error --verbose "D:\D\avo\backup\bck_04042017_1410.tar"

Wie Sie sehen können, haben beide die --no-ownerOption, aber schließlich habe ich den Fehler unten

Geben Sie hier die Bildbeschreibung ein

Was mich schrecklich nervt, ist das Protokoll unten

pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») :
pg_restore: [programme d'archivage (db)] Erreur à partir de l'entrée TOC 2633 ; 0 0 ACL adm avo******
pg_restore: [programme d'archivage (db)] could not execute query: ERREUR:  role « avo****** » does not exist

Warum heißt es, dass es eine Rolle braucht, auch wenn die --no-ownerangegeben wurde?

Habe ich etwas verpasst?

Nachtrag: Ich verwende Postgres 9.3

Prost

Antworten:


13

Der Fehler tritt beim pg_restoreFestlegen der ACLs auf: Sie können --no-acldamit GRANTBefehle verhindern .

Mit der -FtOption in pg_dumpkönnen Sie Rollen und ACLs nur in überspringen pg_restore. Sie können den Katalog auch mit bearbeiten, --listwenn Sie weitere Details benötigen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.