在使用 11.4 版的数据库中pg_dump psql
转储中,search_path设置如下:
SELECT pg_catalog.set_config('search_path', '', false);
我正在尝试使用另一个模式(即不是public
(,并通过设置 search_path
使这个新模式成为特定角色的默认模式。换句话说:
ALTER ROLE myrole IN DATABASE mydatabase SET search_path TO myschema,public;
目前,即使我可以以该角色登录 psql 并验证是否已使用 SELECT * FROM current_setting('search_path');
设置search_path
也无法将该更改导出到转储中,这意味着我必须假设它已正确设置。
但是,我希望使用pg_dump
将其作为转储文件中的命令完成,而不是自己在psql
中设置它并隐式假设它已正确设置。这能做到吗?pg_dump
中是否有我缺少的设置?
角色(用户(是 Postgres 实例(又名"集群",又名"数据目录"(的全局角色,并在该实例中的所有数据库之间共享。
pg_dump
不会转储全局对象,因为它只转储数据库内容。
要查看角色的更改,您需要使用 pg_dumpall
转储"全局变量"
pg_dumpall --globals-only -f globals.sql