त्रुटि बताती है कि psql उपयोगिता आपके डेटाबेस सर्वर से कनेक्ट करने के लिए सॉकेट नहीं ढूंढ सकती है। या तो आपके पास पृष्ठभूमि में डेटाबेस सेवा नहीं चल रही है, या सॉकेट कहीं और स्थित है, या शायद pg_hba.conf
ठीक करने की आवश्यकता है।
चरण 1:सत्यापित करें कि डेटाबेस चल रहा है
आपके ऑपरेटिंग सिस्टम के आधार पर कमांड भिन्न हो सकती है। लेकिन अधिकांश *ix सिस्टम पर निम्नलिखित कार्य करेगा, यह सभी चल रही प्रक्रियाओं के बीच पोस्टग्रेज की खोज करेगा
ps -ef | grep postgres
मेरे सिस्टम पर, मैक ओएसएक्स, यह थूक देता है
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
अंतिम कॉलम सर्वर को प्रारंभ करने के लिए प्रयुक्त कमांड और विकल्पों को दिखाता है।
आप निम्न का उपयोग करके पोस्टग्रेज़ सर्वर प्रारंभ करने के लिए उपलब्ध सभी विकल्पों को देख सकते हैं।
man postgres
वहां से, आप देखेंगे कि विकल्प -D
और -r
क्रमशः datadir
. हैं और logfilename
.
चरण 2:यदि पोस्टग्रेज़ सेवा चल रही है
find
का उपयोग करें सॉकेट के स्थान की खोज करने के लिए, जो कहीं /tmp
. में होना चाहिए
sudo find /tmp/ -name .s.PGSQL.5432
यदि पोस्टग्रेज चल रहा है और सॉकेट कनेक्शन स्वीकार कर रहा है, तो उपरोक्त आपको सॉकेट का स्थान बताना चाहिए। मेरी मशीन पर, यह निकला:
/tmp/.s.PGSQL.5432
फिर, स्पष्ट रूप से इस फ़ाइल के स्थान का उपयोग करके psql के माध्यम से कनेक्ट करने का प्रयास करें, उदा.
psql -h /tmp/ dbname
चरण 3:यदि सेवा चल रही है लेकिन आपको सॉकेट दिखाई नहीं दे रहा है
यदि आपको सॉकेट नहीं मिल रहा है, लेकिन देखें कि सेवा चल रही है, तो सत्यापित करें कि pg_hba.conf फ़ाइल स्थानीय सॉकेट की अनुमति देती है।
datadir
. पर ब्राउज़ करें और आपको pg_hba.conf
खोजना चाहिए फ़ाइल।
डिफ़ॉल्ट रूप से, फ़ाइल के निचले भाग के पास आपको निम्न पंक्तियाँ दिखनी चाहिए:
# "local" is for Unix domain socket connections only
local all all trust
यदि आप इसे नहीं देखते हैं, तो आप फ़ाइल को संशोधित कर सकते हैं, और पोस्टग्रेज़ सेवा को पुनरारंभ कर सकते हैं।