postgres - pg_dump i pg_restore bez ról

12

Próbuję przywrócić zrzut bez odpowiednich ról w odbierającej bazie danych.

Jak wspomniano tutaj, ale także tutaj , musisz mieć --no-owneropcję jako, w pg_dumplub w pg_restoreobu

Użyłem następującego wiersza polecenia, aby utworzyć zrzut

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

Linia przywracania jest następująca

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

Jak widać, oba mają --no-owneropcję, ale w końcu mam błąd poniżej

wprowadź opis zdjęcia tutaj

To, co strasznie mnie wkurza, to dziennik poniżej

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

Dlaczego mówi, że potrzebuje roli, nawet jeśli --no-ownerzostała określona?

Przegapiłem coś?

Dodatek: Korzystam z Postgres 9.3

Twoje zdrowie

Andy K.
źródło

Odpowiedzi:

14

Błąd występuje podczas pg_restoreustawiania list ACL: można użyć, --no-aclaby zapobiec GRANTpoleceniom.

Z -Ftopcją w pg_dumpmożesz pomijać role i listy ACL tylko w pg_restore. Możesz także edytować katalog, --listjeśli potrzebujesz więcej szczegółów.

slardiere
źródło