2010-05-20 92 views
79

我需要在Postgres中设置模式路径,以便我不会每次指定模式点表例如schema2.table。 集架构路径:永久设置Postgresql模式路径

SET SCHEMA PATH a,b,c 

似乎只在Mac上一个查询会话工作,之后我关闭查询窗口的路径变量集自身回默认。

我怎样才能使它永久?

回答

103

(如果你没有管理员访问服务器)

ALTER ROLE <your_login_role> SET search_path TO a,b,c; 
+13

同样值得注意的是不要在a,b,c枚举周围使用引号。在过去的15分钟内手动前额... – Jmoney38 2016-03-05 12:51:26

77

您可以在数据库级别设置默认search_path

ALTER DATABASE <database_name> SET search_path TO schema1,schema2; 

,或者在用户或角色级别:

ALTER ROLE <role_name> SET search_path TO schema1,schema2; 

或者,如果你在所有的数据库中都有一个通用的默认模式,你可以设置t他在配置文件中使用search_path选项的系统范围默认值。

当数据库中创建它在默认情况下,从命名模板1一个隐藏的“模板”数据库中创建的,你可以改变该数据库指定为今后创建的所有数据库的新缺省搜索路径。您也可以创建另一个模板数据库并使用CREATE DATABASE <database_name> TEMPLATE <template_name>来创建您的数据库。

+4

对于那些想从psql命令行中想到的人,您可以通过\ dn – BKSpurgeon 2016-09-30 01:00:55

+1

列出模式。需要断开会话并再次连接以使设置生效。 – isapir 2017-12-25 16:44:20

3

约什是正确的,但他忽略了一个变化:

ALTER ROLE <role_name> IN DATABASE <db_name> SET search_path TO schema1,schema2; 

设置用户的搜索路径,在一个特定的数据库。