डेबियन या डेबियन डेरिवेटिव जैसे उबंटू के लिए पैक किए गए पोस्टग्रेएसक्यूएल के लिए सम्मेलन /var/run/postgresql
का उपयोग करना है यूनिक्स डोमेन सॉकेट के लिए निर्देशिका के रूप में। दूसरी ओर स्व-संकलित पोस्टग्रेज क्लाइंट लिब के लिए कन्वेंशन /tmp
का उपयोग करना है , जब तक कि अन्यथा स्व-कॉन्फ़िगर न किया गया हो।
तो दोनों के बीच इस बेमेल का सामान्य मूल कारण पूर्व-संकलित सर्वर-साइड पैकेज के साथ स्वयं-संकलित क्लाइंट-साइड सामान का मिश्रण है (भले ही क्लाइंट और सर्वर एक ही मशीन पर स्थापित हों, क्लाइंट-साइड और सर्वर-साइड हैं अभी भी अलग है और सिंक से बाहर हो सकता है)।
/tmp
. से सॉफ्ट-लिंकिंग इस निर्देशिका के लिए जैसा कि पूछने वाले द्वारा सुझाया गया है, सिवाय इसके कि लिंक हर रिबूट पर खो जाएगा, क्योंकि सामान्य तौर पर /tmp
रिबूट पर खाली हो जाता है।
एक बेहतर विकल्प यह होगा कि database.yml
. में एक प्रविष्टि के रूप में जोड़ा जाए :
-
या तो
host: /tmp
यदि वास्तविक सॉकेट पथ/tmp
है (स्व-संकलित सर्वर, पैकेज्ड क्लाइंट) -
या
host: /var/run/postgresql
अगर असली सॉकेट पथ/var/run/postgresql/
(पैकेज्ड सर्वर, स्व-संकलित क्लाइंट)।
जब होस्ट फ़ील्ड में मान स्लैश वर्ण से शुरू होता है, तो पोस्टग्रेज़ लाइब्रेरी जानता है कि यह होस्टनाम के बजाय स्थानीय सॉकेट के लिए निर्देशिका का स्थान है। निर्देशिका के अंदर फ़ाइल नाम .s.PGSQL.portnumber
उत्पन्न होता है और निर्दिष्ट नहीं किया जाना चाहिए, केवल निर्देशिका।
एक अन्य संभावना यह है कि स्व-संकलित सॉफ़्टवेयर पैकेजों को डेबियन के जितना करीब हो सके, डिफॉल्ट को ओवरराइड करते हुए कॉन्फ़िगर किया जाए।