2010-05-20 10 views
79

मुझे पोस्टग्रेज़ में स्कीमा पथ सेट करने की आवश्यकता है ताकि मैं हर बार स्कीमा डॉट टेबल निर्दिष्ट न करें। schema2.table। सेट स्कीमा पथ:स्थायी रूप से पोस्टग्रेस्क्ल स्कीमा पथ

SET SCHEMA PATH a,b,c 

केवल मैं क्वेरी खिड़की पथ वैरिएबल सेट ही बंद करने के बाद डिफ़ॉल्ट करने के लिए वापस, मैक पर एक क्वेरी सत्र के लिए काम करने के लिए लगता है।

मैं इसे स्थायी कैसे बना सकता हूं?

उत्तर

103

(और तुम सर्वर के लिए कोई व्यवस्थापक पहुँच है या नहीं)

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

ए, बी, सी गणना के चारों ओर उद्धरणों का स्पष्ट रूप से उपयोग न करने के लिए भी ध्यान देने योग्य है। पिछले 15 मिनट के लिए हाथ से माथे ... – Jmoney38

77

आप डेटाबेस स्तर पर डिफ़ॉल्ट search_path सेट कर सकते हैं:

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

या उपयोगकर्ता या भूमिका के स्तर पर:

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

या यदि आपके सभी डेटाबेस में एक सामान्य डिफ़ॉल्ट स्कीमा है तो आप टी सेट कर सकते हैं वह search_path विकल्प के साथ कॉन्फ़िगरेशन फ़ाइल में सिस्टम-व्यापी डिफ़ॉल्ट है।

जब एक डेटाबेस बनाया जाता है यह Template1 नाम के एक छिपा "टेम्पलेट" डेटाबेस से डिफ़ॉल्ट रूप से बनाई गई है, तो आप भविष्य में बनाए सभी डेटाबेस के लिए एक नया डिफ़ॉल्ट खोज पथ निर्दिष्ट करने के लिए कि डेटाबेस बदल सकता है। आप अपने डेटाबेस बनाने के लिए एक और टेम्पलेट डेटाबेस भी बना सकते हैं और CREATE DATABASE <database_name> TEMPLATE <template_name> का उपयोग कर सकते हैं।

+4

psql कमांड लाइन से सोचने वाले लोगों के लिए आप \ dn – BKSpurgeon

+1

द्वारा स्कीमा सूचीबद्ध कर सकते हैं सत्र को डिस्कनेक्ट करने और सेटिंग्स को प्रभावी होने के लिए फिर से कनेक्ट करने की आवश्यकता है। – isapir

3

जोश सही है, लेकिन वह एक विविधता बाहर छोड़ दिया: एक विशेष डेटाबेस में

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

उपयोगकर्ता के लिए खोज पथ सेट करें।

संबंधित मुद्दे