2010-05-20 90 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; 

設置用戶的搜索路徑,在一個特定的數據庫。