使用pg_dump
创建Postgres纯文本SQL文件。使用psql -f
导入文本SQL文件时,一切似乎都正常运行。
但新导入的数据库缺少search_path
。源数据库有search_path
,我希望目标数据库具有相同的。在编辑器中查看纯SQL文件,我看到SET search_path
命令。这是一个问题,还是我错过了什么?
答案 0 :(得分:2)
每个会话设置search_path
,可以随时更改。您可以存储数据库,角色甚至特定数据库中的角色的预设。这将使用以下命令设置:
ALTER DATABASE test SET search_path = blarg,public;
ALTER ROLE foo SET search_path = blarg,public;
等
或者您可能希望postgresql.conf
中的常规设置开头?见下面的链接。
平原:
SET search_path = blarg,public;
就像你在SQL文件中看到的那样,只为它执行的会话设置search_path
。
潜在问题可能是这个(quoting the manual):
数据库角色在数据库群集安装中是全局的(和 不是每个数据库)。
大胆强调我的。
使用pg_dump
(不是包含pg_dumpall
的整个群集,不包括全局对象)的数据库的备份不包含角色。如果您为某个角色设置了默认search_path
,那么就不会包含该内容。
详细说明: