postgres-没有角色的pg_dump和pg_restore


12

我正在尝试在不具有接收数据库上适当角色的情况下还原转储。

如前所述这里也是在这里,你需要有--no-owner作为一个选项,无论是在pg_dumppg_restore或两者

我使用以下命令行创建我的转储

"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

恢复线如下

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

如您所见,两者都有--no-owner选择,但最终,我在下面出现了错误

在此处输入图片说明

令我感到困扰的是下面的日志

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

为什么说即使--no-owner指定,也需要角色?

我错过了什么?

附录:我在Postgres 9.3上运行

干杯

Answers:


14

pg_restore设置ACL 时发生错误:您可以使用它--no-acl来阻止GRANT命令。

使用中的-Ft选项pg_dump,您只能在中跳过角色和ACL pg_restore--list如果需要更多详细信息,还可以使用编辑目录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.