सॉकेट फ़ाइल "/var/pgsql_socket/.s.PGSQL.5432" माउंटेन लायन (ओएस सर्वर) में गुम


95

मैंने अभी अपने मैकमिनी सर्वर को लायन सर्वर से माउंटेन लायन में ओएस एक्स सर्वर का उपयोग करके अपग्रेड किया है। मैं PostgreSQL के साथ एक ही समस्या है कि मैं पिछले साल किया था जब मैंने पहली बार Lion Server स्थापित किया था।

जब मैं किसी भी तरह के PostgreSQL टर्मिनल कमांड को करने की कोशिश करता हूं तो मुझे निम्नलिखित कुख्यात त्रुटि संदेश मिलता है जो कई वर्षों में प्राप्त हुए हैं:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

मैं त्रुटि मिलने पर _postgres के लिए पासवर्ड बदलने का प्रयास कर रहा था। मैंने कई कमांड की कोशिश की, लेकिन वही त्रुटि मिली। मैंने सिर्फ अपना सर्वर रिबूट किया लेकिन कोई किस्मत नहीं। मैंने / var / pgsql_socket को देखने के लिए रूट के रूप में लॉग इन किया और फ़ोल्डर खाली है। फ़ोल्डर / var / pgsql_socket_alt भी खाली है।

मैंने इस बारे में ऑनलाइन जाँच की है। हालाँकि, स्टैक ओवरफ्लो पर सहित मैंने जो भी समाधान पढ़े हैं, उन सभी के बारे में, PostgreSQL को हटाने और पुनर्स्थापित करने का सुझाव देते हैं। मुझे नहीं पता लेकिन यह एक प्रशंसनीय विकल्प की तरह नहीं लगता है क्योंकि सर्वर ऐप पर कई विकल्प PostgreSQL का उपयोग करते हैं। मैंने Apple एंटरप्राइज सपोर्ट (कोई समझौता नहीं) से संपर्क किया और मुझे बताया गया कि मेरे मुद्दे को डेवलपर्स द्वारा हल करना होगा जो $ 695 डालेगा।

मेरे पास एक वेबसाइट है जो अभी नीचे है क्योंकि मैं इसका पुनर्निर्माण नहीं कर सकता। मैं नहीं जानता कि इस बिंदु पर इसके साथ मदद के लिए कहां मुड़ना है। मैं यह देखना जारी रखूंगा कि क्या मुझे कुछ मिल सकता है। हालाँकि मुझे उम्मीद है कि कोई मुझे जल्दी जवाब दे सकता है ताकि मैं अपने डेटाबेस का पुनर्निर्माण कर सकूं।

अपडेट: 12/13/2012 15:33 GMT-6

यहाँ ps auwwx के लिए मेरा आउटपुट है। grep postg:

_postgres      28123   0.0  0.1  2479696   7724   ??  Ss    3:01PM   0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t  -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770
server1        28216   0.0  0.0  2432768    620 s000  R+    3:02PM   0:00.00 grep postg
_postgres      28138   0.0  0.0  2439388    752   ??  Ss    3:01PM   0:00.01 postgres: stats collector process                           
_postgres      28137   0.0  0.0  2479828   1968   ??  Ss    3:01PM   0:00.00 postgres: autovacuum launcher process                           
_postgres      28136   0.0  0.0  2479696    544   ??  Ss    3:01PM   0:00.00 postgres: wal writer process                           
_postgres      28135   0.0  0.0  2479696    732   ??  Ss    3:01PM   0:00.01 postgres: writer process                           
_postgres      28134   0.0  0.0  2479696    592   ??  Ss    3:01PM   0:00.00 postgres: checkpointer process                           
_postgres      28131   0.0  0.0  2439388    368   ??  Ss    3:01PM   0:00.00 postgres: logger process 

अपडेट: 12/13/2012 18:10 GMT-6

गहन खोज के बाद इस वीडियो को पाया गया। मैं PostgreSQL को काम करने और त्रुटि को दूर करने में सक्षम था। मैं pgadmin और phppgadmin का उपयोग कर कनेक्ट करने में सक्षम हूं। मैं सरासर हताशा के कारण लायन सर्वर पर वापस जाने वाली थी। अब मुझे नहीं करना पड़ेगा।

http://www.youtube.com/watch?v=y1c7WFMMkZ4


22
आपकी समस्या तथ्य मैक ओएस एक्स PostgreSQL के पहले से स्थापित संस्करण है कि करने पर निर्भर करता psqlअपने पर है PATHसंस्करण आप स्थापित करने से पहले। वे विभिन्न स्थानों में यूनिक्स सॉकेट की तलाश करते हैं। या तो टीसीपी / आईपी का उपयोग करके निर्दिष्ट करें -h localhostया अधिमानतः अपने ठीक करें PATHताकि psqlपहले सही पाया जाए। Apple के विचित्र निर्णय न केवल PostgreSQL को बंडल करने के लिए, बल्कि इसके साथ खिलवाड़ करते हैं इसलिए इसने गैर-मानक स्थानों में चीजें डाल दीं, इस समस्या का मूल कारण है।
क्रेग रिंगर

3
OSX में एक समस्या चल रही है, जहां पैकियों ने यूनिक्स-डोमेन सॉकेट को सामान्य से अलग जगह पर रखने का फैसला किया है। मुझे खोज लेने दो ... BRB ... stackoverflow.com/a/8482546/905902
Wildplasser

मैंने एक पुराने PATH को .bashrc में कॉपी किया। मैंने postgreSQL का दूसरा संस्करण स्थापित नहीं किया है। यहाँ मेरा पैठ कथन है जिसमें आरवीएम के लिए कोड शामिल है। अगर कोई मुझे बता सकता है कि मुझे इसे बदलने के लिए क्या करना चाहिए। जब मैं कौन सा psql करता हूँ तो यह / usr / bin / psql में पाया जाता है। आपकी मदद के लिए आप सभी का बहुत बहुत धन्यवाद। पथ = "$ पथ: $ HOME / .rvm / बिन: / usr / bin / psql: / usr / स्थानीय: / usr / स्थानीय / sbin: / usr / स्थानीय / बिन: / usr / sbin: / usr / bin" मैं रूट के रूप में लॉग इन करते हुए सॉकेट फ़ाइल को भी खोज रहा हूं।
पामेला कुक - लाइटबेट कॉर्प

1
उपयोग करने वालों के लिए homebrewऔर osx@CraigRinger के पास आपके लिए सही उत्तर हो सकता है, के साथ पुष्टि करें brew doctor
कार्तिक टी

जवाबों:


299

मैं त्रुटि को रोकने के लिए अपने .bash_profile में निम्नलिखित को जोड़ने में सक्षम था:

export PGHOST=localhost

यह काम करता है क्योंकि :

यदि आप होस्ट नाम को छोड़ देते हैं, तो psq स्थानीय होस्ट पर एक सर्वर से यूनिक्स-डोमेन सॉकेट के माध्यम से, या टीसीपी / आईपी के माध्यम से उन मशीनों पर लोकलहोस्ट से कनेक्ट होगा, जिनके पास यूनिक्स-डोमेन सॉकेट नहीं है।

आपका OS यूनिक्स डोमेन सॉकेट्स का समर्थन करता है, लेकिन PostgreSQL के यूनिक्स सॉकेट कि psql जरूरत है जो या तो मौजूद नहीं है या इसकी अपेक्षा एक अलग स्थान पर है।

के रूप में स्पष्ट रूप से एक होस्ट नाम निर्दिष्ट करना localhostबलों psqlटीसीपी / आईपी का उपयोग करें। एक पर्यावरण चर सेट करना PGHOSTइसे प्राप्त करने के तरीकों में से एक है। यह Psql के मैनुअल में प्रलेखित है ।


37
रेल एप्लिकेशन के साथ इसमें चलने वाले किसी भी व्यक्ति के लिए: आप host.yml में होस्ट निर्दिष्ट कर सकते हैं।

12
ये किस तरह का जादू है? मेरा मतलब है, गंभीरता से। क्या आप समझाएँगे?
श्रीजित रामकृष्णन

1
मैं हमेशा इस जवाब पर वापस आता हूं! मेरा जीवन फिर से बचा लिया। यह स्निपेट वास्तव में इस पृष्ठ पर है, postgresapp.com/documentation/cli-tools.html
sambecker

1
मैं क्यों नहीं, लेकिन यह मेरे लिए काम करता है! मैं 5 रेल में इस समस्या को पूरा किया जब मैं 'रेल db: create' का उपयोग करता हूं, लेकिन मैंने पहले ही host: localhostडेटाबेस में सेट कर दिया है। @ ड्वालेन
स्पार्क.बाओ

1
यह संशोधित किए बिना रेल 5.2 के लिए काम किया database.yml, जब यह त्रुटि पोस्टग्रेज को पुराने होमब्रेव-प्रबंधित संस्करण में अपग्रेड करने के बाद दिखाई दी।
SexxLuthor

37

यह सांत्वना में पेस्ट की कोशिश करें:

$ mkdir /var/pgsql_socket/ 

$ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

अंत में, मुझे यह उत्तर मिला।
ABS

अच्छा। हालांकि मुझे लगता है कि मुझे पता है कि यह क्यों काम कर रहा है, थोड़ा और स्पष्टीकरण उपयोगी होगा। यह समाधान स्वीकृत उत्तर से बेहतर है, केवल विवरण गायब हैं।
Glutexo

23

मैं इसे खाली छोड़ने के बजाय PostgreSQL मेजबान पते के लिए 127.0.0.1 में भरकर हल करने में सक्षम था। (Django उदाहरण)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'database_name',
        'USER': 'database_user',
        'PASSWORD': 'pass',
        'HOST': '127.0.0.1',
        'PORT': '',
        }
}

1
मैं अब गूंगा महसूस कर रहा हूं, मैं इस मुद्दे को लगभग 2 दिनों तक ठीक करने की कोशिश कर रहा हूं। विंडोज पर मैं '127.0.0.1' का उपयोग कर रहा था, लेकिन फिर मैंने अपने कोड को प्रोडक्शन (डेबियन 7) में स्थानांतरित कर दिया और इसे '' में बदलना पड़ा। यह एक प्रकार का अजीब है कि वे ऐसा त्रुटि संदेश देते हैं जो किसी को विश्वास दिलाता है कि समस्या कहीं और हो सकती है।
fang_dejavu

10

आप पसंदीदा संपादक में 'postgresql.conf' खोलें। चर 'unix_socket_directories' के लिए देखें, यह सबसे अधिक संभावना इस तरह दिखेगा:

unix_socket_directories = '/private/tmp/'

लाइन को इसमें बदलें:

unix_socket_directories = '/var/pgsql_socket/'

यदि आप सॉकेट फ़ाइलों को एक से अधिक निर्देशिका अल्पविराम में अलग करना चाहते हैं, तो ध्यान दें।


यह सॉकेट को कहीं और बनाने की कोशिश करने का वांछित प्रभाव था, लेकिन सर्वर शुरू नहीं होगा क्योंकि इसमें / var निर्देशिका में फ़ाइलों को बनाने की अनुमति नहीं थी। मैंने सॉकेट का उपयोग करने के लिए उच्च स्तर पर कॉन्फ़िगरेशन फ़ाइलों को बदलना समाप्त कर दिया, जहां यह मूल रूप से था। बहुत सुंदर के रूप में इस उत्तर में दिए गए stackoverflow.com/a/29511357/1535177
इओस

9

एक और अधिक सरल समाधान ( http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-up उन्नयन-postgres/ के लिए धन्यवाद )। मैंने 9.4 पोस्ट करने के लिए अपग्रेड किया था। मेरे मामले में, मुझे (गुगली के एक दिन के बाद और सफल नहीं होने के बाद) सब करने की ज़रूरत थी

gem uninstall pg
gem uninstall activerecord-postgresql-adapter
bundle install

Webrick को पुनरारंभ करें, और किया!


7

जैसा कि टिप्पणियों में दूसरों ने उल्लेख किया है, इस मुद्दे का एक बहुत ही सरल समाधान डेटाबेस कॉन्फ़िगरेशन के भीतर डेटाबेस 'होस्ट' घोषित करना है। इस उत्तर को जोड़ना, इसे पढ़ने वाले किसी भी व्यक्ति के लिए थोड़ा और स्पष्ट करने के लिए।

उदाहरण के लिए रेल एप्लिकेशन पर रूबी में, /config/database.yml संपादित करें:

development:
  adapter: postgresql
  encoding: unicode
  database: database_name
  pool: 5
  host: localhost

नोट: होस्ट को निर्दिष्ट करने के लिए अंतिम पंक्ति जोड़ी गई। योसेमाइट को अपडेट करने से पहले मुझे इस तरह से मेजबान को निर्दिष्ट करने की आवश्यकता नहीं थी।

आशा है कि यह किसी की मदद करता है।

चियर्स


मुझे अपनी होस्ट को उस निर्देशिका में सेट करने की आवश्यकता है जो मुझे मिली जिसमें .s.PGSQL.5432फ़ाइल शामिल थी।
इओस

5

डेटाबेस की स्थिति के लिए जाँच करें:

service postgresql status

यदि डेटाबेस नहीं चल रहा है, तो db शुरू करें:

sudo service postgresql start

उपरोक्त त्रुटि के साथ अटक गया और डीबी शुरू करके इसे हल किया।
शिवकुमार आरजे

4

क्या आप अपनी postgresql.conf फ़ाइल देख सकते हैं ??

आपके पोस्टग्रेट्स किस पोर्ट पर चल रहे हैं ??

मुझे लगता है कि यह पोर्ट 5432 पर नहीं चल रहा है। अगर मैं इसे 5432 में नहीं बदलूंगा

या टर्मिनल उपयोग पर

psql -U  postgres -p YOUR_PORT_NUMBER database_name

1
मैं टर्मिनल कमांड नहीं चला सकता। मुझे समान त्रुटि मिली। मुझे जहां मुझे postgresql.conf फाइल मिल सकती है, वहां मदद की जरूरत है। लायन सर्वर चलाते समय मेरे पास / var / pgsql फ़ोल्डर होता था। मुझे लगता है कि अब चला गया है। मैंने अभी-अभी ps grep कमांड के लिए अपना आउटपुट पोस्ट किया है। मैंने PostgreSQL चलाने के लिए विकी सेवा चालू की। मुझे बताया गया था कि मैं किसी भी सर्वर ऐप सेवाओं को चालू किए बिना sudo serveradmin कमांड का उपयोग कर सकता हूं लेकिन वे काम नहीं करते हैं। मैं अभी रूट के रूप में लॉग इन हूं इसलिए मुझे कुछ भी करने में सक्षम होना चाहिए :) मैंने नेटवर्क उपयोगिता में बंदरगाहों की जांच की। 5432 का उपयोग नहीं हुआ।
पामेला कुक - लाइटबेट कॉर्प

2

मुझे Django के साथ यह समस्या थी।

अपने होस्टनाम को "लोकलहोस्ट" पर स्पष्ट रूप से सेट करके इसे ठीक करें।


2

मैं ऐसा करके शब्द बनाता हूं:

dpkg-reconfigure locales

और अपने पसंदीदा स्थान चुनें

pg_createcluster 9.5 main --start

(9.5 पोस्टग्रेज़ेल का मेरा संस्करण है)

/etc/init.d/postgresql start

और फिर यह शब्द!

sudo su - postgres
psql

1

यदि आपको उपरोक्त समस्या है लेकिन आपने योसेमाइट से अपग्रेड किया है, तो एक अलग दृष्टिकोण की आवश्यकता है क्योंकि अपग्रेड समाधान कुछ फाइलों को नष्ट कर सकता है। OS X (Yosemite या El Capitan) के नवीनतम संस्करण की स्थापना के बाद गायब हुए अधिक विवरण `pg_tblspc` पर हैं ।



1
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket"/var/pgsql_socket/.s.PGSQL.5432"?

मैं उपरोक्त त्रुटि प्राप्त करता रहा और उपरोक्त किसी भी समाधान ने मेरे लिए काम नहीं किया। अंत में निम्नलिखित समाधान ने मैक ओएस एक्स पर मेरी समस्या को हल किया

काढ़ा का उपयोग कर पोस्टग्रेज स्थापित करें

brew install postgres

काढ़ा सेवाएँ स्थापित करें

brew tap homebrew/services

पृष्ठभूमि सेवा के रूप में पोस्टग्रेज शुरू करने के लिए

brew services start postgresql

मैन्युअल रूप से पोस्टग्रेस को रोकने के लिए

brew services stop postgresql

हम Postgres को पुनरारंभ करने के लिए काढ़ा सेवाओं का भी उपयोग कर सकते हैं

brew services restart postgresql

1

पोस्ट कोड के साथ चल रहे पोस्टग्रेज सर्वर की जांच करें

sudo service postgresql status

यदि पोस्टग्रैज सर्वर निष्क्रिय है, तो निम्न कमांड लिखें।

sudo service postgresql start

1

मुझे यह त्रुटि मेरे कंप्यूटर के फ्रीज़ होने और अपने दम पर रिबूट होने के बाद मिली। इस पृष्ठ पर मेरे लिए समाधान नहीं मिला, बल्कि एक ही त्रुटि वाले psql के साथ एक और बहुत ही उच्च रेटिंग वाले SO प्रश्न पर : सर्वर से कनेक्ट नहीं हो सका: ऐसी कोई फ़ाइल या निर्देशिका (मैक ओएस एक्स) नहीं । जवाब: बस इस फ़ाइल को हटा दें /usr/local/var/postgres/postmaster.pid, फिर brew services restart postgresqlचाल चली। इससे पहले कि आप अपने डीबी को स्थायी रूप से भ्रष्ट कर सकते हैं, ऐसा करने से पहले पोस्टग्रेज प्रक्रियाओं को मारने के बारे में जुड़े हुए जवाब पर चेतावनी दें।


0

Mac OS के स्वामित्व वाले Postgres db पर फ़ाइल अनुमति प्रतिबंधित है। रिबूट, या पोस्टग्रेज के पुनरारंभ के बाद ये अनुमतियां रीसेट हो जाती हैं: जैसे कि सर्वरडैम पोस्टग्रेज शुरू करते हैं।

इसलिए, अस्थायी रूप से अनुमतियाँ या स्वामित्व रीसेट करें:

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432
sudo chown "webUser"  /var/pgsql_socket/.s.PGSQL.5432

अनुमतियाँ रीसेट करना सुरक्षित नहीं है, इसलिए db के एक संस्करण को स्थापित करें, जिसे आप समाधान के लिए अपनाते हैं।


0

मुझे इसमें कुछ समय लगा, लेकिन प्रस्तावित सुझावों और अतिरिक्त वेब खोजों के माध्यम से जाने के बाद मैं यह काम कर पाने में सक्षम था। मैंने Mactasia द्वारा बनाए गए निम्न YouTube वीडियो में जानकारी का उपयोग किया:

http://www.youtube.com/watch?v=y1c7WFMMkZ4

जब मैंने ऐसा किया तो मैंने एक्सटेंशन के रूप में .lock के साथ फाइल देखी। हालाँकि मुझे तब भी त्रुटि हुई जब मैंने PostgreSQL का उपयोग करके अपने रेल अनुप्रयोग पर काम करना शुरू करने पर रेल सर्वर को शुरू करने की कोशिश की। इस बार मुझे एक अनुमति अस्वीकृत त्रुटि मिली। यह तब है जब मुझे याद आया कि न केवल मुझे pl_istdresses को plist में बदलना है बल्कि मुझे Unit_socket_permissions को 0777 में बदलना है। मैंने var / pgsql_socket फ़ोल्डर पर अनुमतियों को बदलने के लिए रूट के रूप में लॉग इन किया है, जहां मैं इसे एक्सेस कर सकता हूं उपयोगकर्ता स्तर। Postgres अब ठीक काम कर रहा है। मैं अपने SQL बैकअप से अपना डेटा पुनः लोड करने की प्रक्रिया में हूं।

मुझे यह समझ में नहीं आया कि जब मैंने विकी को पोस्टग्रेसीक्यूएल चालू किया था, तो जब मैं सूडो सर्वरडैमिन फुलस्टैटस पोस्टग्रेज करता था, तो वह निश्चित रूप से काम कर रहा था, लेकिन फिर भी मुझे त्रुटि मिली। ओह अच्छा।


0

मैंने अभी एक नया क्लस्टर बनाया है और जो मेरे लिए काम करता है, मैं उपयोग कर रहा था (PostgreSQL) 9.3.20:

sudo pg_createcluster 9.3 main --start

0

सबसे पहले स्थापित पोस्टग्रैज को हटा दें:

sudo apt-get purge postgr*
sudo apt-get autoremove

फिर 'सिनेप्टिक' स्थापित करें:

sudo apt-get install synaptic
sudo apt-get update

फिर Postgres इंस्टॉल करें

sudo apt-get install postgresql postgresql-contrib

0

RubyOnRails ऐप के लिए localhost यदि आप कस्टम Postgresql संस्करण का उपयोग करते हैं

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