Eu me esforcei muito para tentar entender o processo de pg_dump e pg_restore, mas há algumas coisas importantes que ainda não entendi. Meu objetivo é copiar um esquema de um banco de dados de produção com muitas funções para minha replicação local, onde preciso usar apenas um usuário administrador do postgres.
Eu despejo myschema com esta sintaxe
pg_dump -h "pgprod" -p "5432" -d prod_db -U "myuser" -Fc -C --verbose --schema "myschema" -f .\test.backup
Restaurar
pg_restore -U postgres -h localhost -p 5432 -d localdb -C -v --no-acl --role=postgres test.backup
Mas não consigo descobrir como ignorar qualquer forma de funções que existisse no prod_db. Também tentei o sinalizador –no-owner com o mesmo resultado. Estou completamente preso nesta etapa, pois não entendo por que isso está acontecendo. Executando postgres 16
pg_restore: error: could not execute query: ERROR: role "user1" does not exist
Command was: ALTER TABLE public."mytable" OWNER TO user1;
Não acho que você deva especificar
--role
.Basta adicionar
--no-acl
e--no-owner
àpg_restore
linha de comando, e todos os objetos pertencerão ao usuário que se conectar compg_restore
.