PostgreSQL search_path问题使用pg_dump创建了普通的.sql文件

时间:2017-03-06 03:58:03

标签: postgresql pg-dump search-path

使用pg_dump创建Postgres纯文本SQL文件。使用psql -f导入文本SQL文件时,一切似乎都正常运行。

但新导入的数据库缺少search_path。源数据库有search_path,我希望目标数据库具有相同的。在编辑器中查看纯SQL文件,我看到SET search_path命令。这是一个问题,还是我错过了什么?

1 个答案:

答案 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,那么就不会包含该内容。

详细说明: