Postgres - कोई भी TCP / IP सॉकेट नहीं बना सका


14

मैं postgresql 9.3 के साथ विकास में एक रेल एप्लिकेशन चला रहा हूं। जब मैंने आज यात्री सर्वर शुरू करने की कोशिश की, मुझे मिल गया:

PG::ConnectionBad - could not connect to server: Connection refused
    Is the server running on host "localhost" (217.74.65.145) and accepting
    TCP/IP connections on port 5432?

कोई बड़ी बात मैंने नहीं सोचा था, जो पहले हुआ था। पोस्टगार्ट्स को फिर से शुरू करने से हमेशा समस्या हल हो गई। इसलिए मैं भागा sudo service postgresql restartऔर गया:

 * Restarting PostgreSQL 9.3 database server
 * The PostgreSQL server failed to start. Please check the log output:
2014-06-11 10:32:41 CEST LOG:  could not bind IPv4 socket: Cannot assign requested address
2014-06-11 10:32:41 CEST HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2014-06-11 10:32:41 CEST WARNING:  could not create listen socket for "localhost"
2014-06-11 10:32:41 CEST FATAL:  could not create any TCP/IP sockets
...fail!

postgresql.confचूक के लिए मेरे अंक: localhostऔर बंदरगाह 5432। मैंने बंदरगाह को बदलने की कोशिश की लेकिन त्रुटि संदेश समान है (बंदरगाह परिवर्तन को छोड़कर)।

दोनों ps aux | grep postgresqlऔर ps aux | grep postmasterकुछ भी नहीं।

संपादित करें:

में postgresql.confमैं listen_addressesके 127.0.0.1बजाय बदल दिया है localhostऔर यह चाल, सर्वर को फिर से शुरू किया। मैं भी संपादित करने के लिए करने के लिए अपने आवेदन पत्र 'डाटाबेस config और बिंदु था 127.0.0.1बजाय localhost। हालांकि, अब सवाल यह है कि लोकलहोस्ट को क्यों माना जाता है217.74.65.145 और नहीं 127.0.0.1?

वह मेरा है /etc/hosts:

127.0.0.1   local
127.0.1.1   jacek-X501A1
127.0.0.1   something.name.non.example.com
127.0.0.1   company.something.name.non.example.com

किसी भी आउटपुट से sudo netstat -anlp | grep 5432?
फ्लाप

1
यदि आप अपने डेटा को बाधित करने जा रहे हैं, तो कृपया जिम्मेदारी से करें और example.comडोमेन नाम के रूप में उपयोग करें।
जेनी डी

जवाबों:


12

तुम्हारा /etc/hostsटूट गया है। पहली पंक्ति पढ़नी चाहिए

127.0.0.1   localhost something.name.non.example.com company.something.name.non.example.com

भविष्य के पाठकों के लिए ध्यान दें कि यदि आपके पास एक लोकलहोस्ट प्रविष्टि है , तो भी जब वास्तव में डीएनएस लुकअप चलाया जाता है तो /etc/hostsविभिन्न अन्य कारक एक अलग डीएनएस प्रतिक्रिया का कारण बन सकते हैं localhost। देखें stackoverflow.com/a/47824848/5419599
वाइल्डकार्ड

@Wildcard मुझे नहीं पता कि कौन सा ओएस है जो उत्तर पर (यदि कोई हो) लागू होगा। यह निश्चित रूप से लिनक्स पर ज्यादा मायने नहीं रखता है।
कास्परेड

1
यदि आप nsswitch.conf के dns filesबजाय ऑर्डर प्राप्त कर चुके हैं, तो @kasperd मुझे लगता है files dns, और एक नाम सर्वर है जो लोकलहोस्ट को हल करता है, आप मुसीबत में पड़ सकते हैं। लेकिन यह मेरे लिए बहुत संभावना नहीं है ...
जेनी डी

@ जेनीडी उपरोक्त लिंक nslookupसत्यापित करने के लिए उपयोग करने का सुझाव देता है । लेकिन nslookupलिनक्स पर कमांड का उपयोग नहीं होता है nsswitch.confऔर /etc/hostsपहले स्थान पर है। और dns filesविन्यास में डालने के लिए, मुझे परेशानी के लिए पूछने जैसा लगता है।
12

1
@kasperd सहमत - यह "इट्स योर-योर-लान्ड-फॉल्ट" स्केल पर काफी अधिक होगा ...
जेनी डी

0

मैं समझता हूं कि इस प्रश्न का उत्तर दिया गया है, लेकिन जिनके पास अभी भी त्रुटि है, उसका कारण यह हो सकता है कि कुछ अन्य प्रक्रिया पहले ही शुरू हो चुकी है। उदाहरण के लिए Homebrewसिस्टम बूट पर।

अगर ऐसा है तो इसे रोकने की कोशिश करें:
brew services stop postgres

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.