postgres - pg_dump e pg_restore sem funções

11

Estou tentando restaurar um despejo sem ter as funções apropriadas no banco de dados de recebimento.

Como mencionado aqui , mas também aqui , você precisa ter o --no-ownercomo uma opção, seja em pg_dumpou pg_restoreou ambos

Eu usei a seguinte linha de comando para criar meu despejo

"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

A linha de restauração é a seguinte

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

Como você pode ver, ambos têm a --no-owneropção, mas eventualmente, eu tenho o erro abaixo

insira a descrição da imagem aqui

O que me incomoda muito é o log abaixo

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

Por que diz que precisa de uma função, mesmo que a tenha --no-ownersido especificada?

Perdi alguma coisa?

Adendo: Estou executando no Postgres 9.3

Felicidades

Andy K
fonte

Respostas:

13

O erro ocorre ao pg_restoredefinir as ACLs: você pode usar --no-aclpara impedir GRANTcomandos.

Com a -Ftopção in pg_dump, você pode pular funções e ACLs apenas em pg_restore. Você também pode editar o catálogo --listse precisar de mais detalhes.

slardiere
fonte