2012-07-27 11 views
11

कनेक्ट नहीं कर सका पहाड़ शेर के मेरे अपडेट के बाद मेरे पोस्टग्रेस काम करते हैं। यह अभी भी चल रहा है लेकिन मेरे एप्लिकेशन अब उससे कनेक्ट नहीं हो सकते हैं।माउंटेन शेर पोस्टग्रेस

$ ps aux | grep postgres 
postgres   204 0.0 0.0 2446960 836 ?? Ss 7:31AM 0:00.59 postgres: stats collector process  
postgres   203 0.0 0.1 2478732 2240 ?? Ss 7:31AM 0:00.41 postgres: autovacuum launcher process  
postgres   202 0.0 0.0 2478600 584 ?? Ss 7:31AM 0:00.34 postgres: wal writer process  
postgres   201 0.0 0.0 2478600 784 ?? Ss 7:31AM 0:00.48 postgres: writer process  
postgres   95 0.0 0.0 2446960 368 ?? Ss 7:31AM 0:00.11 postgres: logger process  
postgres   64 0.0 0.2 2478600 7972 ?? Ss 7:31AM 0:00.26 /Library/PostgreSQL/9.1/bin/postmaster -D/Library/PostgreSQL/9.1/data 
anezio   10205 0.0 0.0 2432768 624 s000 R+ 8:01AM 0:00.00 grep postgres 

और मेरे अनुप्रयोगों इस त्रुटि लौट रहे हैं:

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"? 

मैं अभी भी आदेश के साथ psql को /Library/PostgreSQL/9.1/bin/psql यू postgres

की तरह लगता है कनेक्ट कर सकते हैं कुछ सही जगह पर इंगित नहीं कर रहा है

+1

लगता है कि आपके पास उस मशीन पर पोस्टग्रेस का कुछ और निर्माण है जिसे आप psql से उपयोग कर रहे हैं। शायद आप हमें अपने इंस्टॉलेशन इतिहास के बारे में भी बता सकते हैं? – araqnid

+0

Ive ने postgresql.com से एक क्लिक इंस्टॉलर का उपयोग करके इसे स्थापित किया। यह मेरे अपडेट पर्वत शेर –

+0

से पहले ठीक काम कर रहा था Ive ने इस समस्या को अनइंस्टॉल करने और Postgresql को पुनर्स्थापित करने का हल किया। धन्यवाद –

उत्तर

0

मैं स्थापना रद्द करने और यह

2

डिफ़ॉल्ट यूनिक्स डोमेन सॉकेट पथ libpq में हार्डकोड किया गया है। क्या हो सकता है कि अपग्रेड से पहले, आपके एप्लिकेशन ने पोस्टग्रेस एक-क्लिक इंस्टॉलर द्वारा स्थापित libpq लाइब्रेरी का उपयोग किया, जबकि अपग्रेड के बाद इस लाइब्रेरी का एक अलग संस्करण उठाया गया।

किसी प्रोग्रामर के दृष्टिकोण से समस्या के आसपास काम करने के लिए, आप डिफ़ॉल्ट पर भरोसा करने के बजाय सॉकेट निर्देशिका निर्दिष्ट कर सकते हैं। सही निर्देशिका पता लगाने के लिए अगर आप यह पहले से ही पता नहीं है, एक सुपर उपयोगकर्ता (आम तौर पर postgres) और इस मुद्दे को एसक्यूएल में के रूप में किसी भी डेटाबेस से कनेक्ट:

SHOW unix_socket_directory; 

तो बदल सकते हैं या रास्ते में प्राप्त के साथ अपने ऐप को पुन: कॉन्फ़िगर कनेक्ट कॉल का होस्ट फ़ील्ड (उदाहरण के लिए कनेक्ट स्ट्रिंग में: host=/path/to/socket dbname=d user=u)। लिबिक इसे यूनिक्स सॉकेट निर्देशिका के रूप में पहचाना जाएगा क्योंकि यह होस्टनाम या आईपी पते के विपरीत, स्लैश से शुरू होता है।

8

मुझे बस एक ही समस्या थी। व्यक्तिगत रूप से मैंने बस पोस्टग्रेस इंस्टॉलर (postgresql-9.1.3-1-osx.dmg मेरे मामले में) से पुनर्स्थापित किया है, मेरे मैक को रीबूट किया है और सब ठीक है। अनुलेख पुनः स्थापित करना मेरे डेटाबेस को ज़ैप नहीं किया गया :)

5

जांचें कि आप कौन से psql का उपयोग कर रहे हैं। हेरोोकू से Postgres.app सर्वर का उपयोग करते समय मुझे एक ही समस्या थी और पाया कि मैं अपने $PATH सेटिंग के आधार पर ऐप्पल के /usr/bin/psql क्लाइंट का उपयोग कर रहा था। अपनी पोस्टग्रेस लाइब्रेरी का उपयोग करने के लिए या अपने psql पर पूर्ण पथ का उपयोग करने के लिए या तो अपना $PATH सेट करें।

+0

यह मेरे लिए काम किया। ब्रू psql/usr/local/bin – vish

+2

पर स्थापित करता है मेरे पास ब्रूव स्थान/usr/local/bin पर पोस्टग्रेर्स स्थापित हैं। मैंने खोज पथ के शीर्ष पर/usr/local/bin को रखने के लिए अपना/etc/पथ बदल दिया था ताकि ब्रू इंस्टॉल इंस्टॉल किए गए थे (पहले/usr/bin इंस्टॉल)। माउंटेन शेर के लिए अपग्रेड/etc/पथ की सामग्री को रीसेट कर देता है; नतीजतन मैंने अपग्रेड के बाद/usr/bin (और गंदा संदेश "सर्वर से कनेक्ट नहीं हो सका)" सेब-स्थापित psql को चुनना शुरू कर दिया।/Etcr/local/bin/top/paths के शीर्ष पर वापस रखकर सब कुछ तय करें। –

0
समस्या

फिर से स्थापित करके इस समस्या का समाधान कर लिया है कि पहाड़ी शेर अपने आप psql ग्राहक (/ usr/bin/psql) जो जाहिरा तौर पर खोज के द्वारा postgres कनेक्ट करने के लिए कोशिश करता है के साथ आता है आपके सॉकर से एक अलग स्थान पर स्थानीय सॉकेट फ़ाइल। आप या तो अपने पोस्टगर्स बिन फ़ोल्डर को शामिल करने के लिए या अपने इंस्टॉलेशन पर डिफ़ॉल्ट/usr/bin/psql को प्रतिस्थापित करने के लिए अपना पाथ वैरिएबल बदल सकते हैं।

1

किसी भी तरह से मैं पूरी तरह भूल गया था कि इस सॉकेट फ़ाइल को डॉट के कारण छुपाया जाएगा। सुनिश्चित करें कि आप ls -A /tmp/.s.PGSQL.5432 का उपयोग करते हैं, यदि आप यह देखने के लिए जांच कर रहे हैं कि सॉकेट वास्तव में है या नहीं।

मेरे पोस्टग्रेस ऐप ने निम्नलिखित के बाद psql से फिर से कनेक्शन स्वीकार करना शुरू कर दिया। मुझे लगता है कि इसे चरण 3 के साथ कुछ करना था।

  1. पोस्टग्रेज़ ऐप से बाहर निकलें।
  2. टर्मिनल प्रकार postgres -D ~/Library/Application\ Support/Postgres/var में। यदि आप पोस्टग्रेस ऐप का उपयोग कर रहे हैं तो यह डेटा निर्देशिका है। यदि आप पोस्टग्रेज़ ऐप का उपयोग नहीं कर रहे हैं तो आपको यह पता लगाना होगा कि डेटा निर्देशिका वास्तव में क्या है।
  3. मुझे ओएस एक्स से एक संकेत मिला कि क्या मैं आने वाले यातायात की अनुमति देना चाहता हूं। मैंने हाँ क्लिक किया।
  4. एक अलग टर्मिनल टैब में psql टाइप करें। आपको सफलतापूर्वक कनेक्ट करना चाहिए।
  5. psql से बाहर निकलने के लिए \q टाइप करें।
  6. पोस्टग्रेस चलाने वाले टैब पर वापस, पोस्टग्रेज़ को रोकने के लिए ctrl c टाइप करें।
  7. पोस्टग्रेज़ ऐप शुरू करें। psql काम करना चाहिए।
संबंधित मुद्दे