使用 . 创建了一个 Postgres 纯文本 SQL 文件pg_dump
。使用psql -f
一切导入文本 SQL 文件时似乎运行良好。
但是新导入的数据库缺少search_path
. 源数据库有search_path
,我希望目标数据库也有。在编辑器中查看纯 SQL 文件,我看到了SET search_path
命令。那么这是一个问题还是我错过了什么?
使用 . 创建了一个 Postgres 纯文本 SQL 文件pg_dump
。使用psql -f
一切导入文本 SQL 文件时似乎运行良好。
但是新导入的数据库缺少search_path
. 源数据库有search_path
,我希望目标数据库也有。在编辑器中查看纯 SQL 文件,我看到了SET search_path
命令。那么这是一个问题还是我错过了什么?
这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
为执行它的会话设置一个。
潜在的问题可能是这个(引用手册):
数据库角色在数据库集群安装中是全局的(而 不是每个单独的数据库)。
大胆强调我的。
数据库的备份pg_dump
(不是整个集群pg_dumpall
,不包括全局对象),不包括角色。如果您search_path
为角色设置了默认值,则不包括在内。
细节: