postgres - pg_dump e pg_restore senza ruoli


11

Sto cercando di ripristinare un dump senza avere i ruoli appropriati sul database di ricezione.

Come accennato qui, ma anche qui , devi avere l' --no-owneropzione come, in pg_dumpo pg_restoreo entrambi

Ho usato la seguente riga di comando per creare il mio dump

"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

La linea di ripristino è la seguente

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

Come puoi vedere, entrambi hanno l' --no-owneropzione ma alla fine ho l'errore sotto

inserisci qui la descrizione dell'immagine

Ciò che mi infastidisce terribilmente è il registro qui sotto

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

Perché dice che ha bisogno di un ruolo anche se è --no-ownerstato specificato?

Ho dimenticato qualcosa?

Addendum: sto correndo su Postgres 9.3

Saluti

Risposte:


13

L'errore si verifica quando si pg_restoreimpostano gli ACL: è possibile utilizzare --no-aclper impedire i GRANTcomandi.

Con l' -Ftopzione in pg_dump, puoi saltare ruoli e ACL solo in pg_restore. Puoi anche modificare il catalogo con --listse hai bisogno di maggiori dettagli.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.