PG :: ConnectionBad - सर्वर से कनेक्ट नहीं हो सका: कनेक्शन ने इनकार कर दिया


270

जब भी मैं अपनी रेल 4.0 सर्वर चलाता हूं, मुझे यह आउटपुट मिलता है।

Started GET "/" for 127.0.0.1 at 2013-11-06 23:56:36 -0500

PG::ConnectionBad - could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (fe80::1) and accepting
TCP/IP connections on port 5432?
:
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
 activerecord (4.0.0) lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:440:in `new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:450:in `checkout_new_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:421:in `acquire_connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:356:in `block in checkout'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `checkout'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:265:in `block in connection'
 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/monitor.rb:211:in `mon_synchronize'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:264:in `connection'
 activerecord (4.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:546:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:79:in `retrieve_connection'
 activerecord (4.0.0) lib/active_record/connection_handling.rb:53:in `connection'
 activerecord (4.0.0) lib/active_record/migration.rb:792:in `current_version'
 activerecord (4.0.0) lib/active_record/migration.rb:800:in `needs_migration?'
 activerecord (4.0.0) lib/active_record/migration.rb:379:in `check_pending!'
 activerecord (4.0.0) lib/active_record/migration.rb:366:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
 activesupport (4.0.0) lib/active_support/callbacks.rb:373:in `_run__1613334440513032208__call__callbacks'
 activesupport (4.0.0) lib/active_support/callbacks.rb:80:in `run_callbacks'
 actionpack (4.0.0) lib/action_dispatch/middleware/callbacks.rb:27:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/reloader.rb:64:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:84:in `protected_app_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:79:in `better_errors_call'
 better_errors (0.9.0) lib/better_errors/middleware.rb:56:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
 railties (4.0.0) lib/rails/rack/logger.rb:38:in `call_app'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `block in call'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `block in tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:25:in `tagged'
 activesupport (4.0.0) lib/active_support/tagged_logging.rb:67:in `tagged'
 railties (4.0.0) lib/rails/rack/logger.rb:21:in `call'
 quiet_assets (1.0.2) lib/quiet_assets.rb:18:in `call_with_quiet_assets'
 actionpack (4.0.0) lib/action_dispatch/middleware/request_id.rb:21:in `call'
 rack (1.5.2) lib/rack/methodoverride.rb:21:in `call'
 rack (1.5.2) lib/rack/runtime.rb:17:in `call'
 activesupport (4.0.0) lib/active_support/cache/strategy/local_cache.rb:83:in `call'
 rack (1.5.2) lib/rack/lock.rb:17:in `call'
 actionpack (4.0.0) lib/action_dispatch/middleware/static.rb:64:in `call'
 railties (4.0.0) lib/rails/engine.rb:511:in `call'
 railties (4.0.0) lib/rails/application.rb:97:in `call'
 rack (1.5.2) lib/rack/content_length.rb:14:in `call'
 thin (1.5.1) lib/thin/connection.rb:81:in `block in pre_process'
 thin (1.5.1) lib/thin/connection.rb:79:in `pre_process'
 thin (1.5.1) lib/thin/connection.rb:54:in `process'
 thin (1.5.1) lib/thin/connection.rb:39:in `receive_data'
 eventmachine (1.0.3) lib/eventmachine.rb:187:in `run'
 thin (1.5.1) lib/thin/backends/base.rb:63:in `start'
 thin (1.5.1) lib/thin/server.rb:159:in `start'
 rack (1.5.2) lib/rack/handler/thin.rb:16:in `run'
 rack (1.5.2) lib/rack/server.rb:264:in `start'
 railties (4.0.0) lib/rails/commands/server.rb:84:in `start'
 railties (4.0.0) lib/rails/commands.rb:78:in `block in <top (required)>'
 railties (4.0.0) lib/rails/commands.rb:73:in `<top (required)>'
 bin/rails:4:in `<main>'

मैं Mavericks OS X 10.9 चला रहा हूं, इसलिए मुझे नहीं पता कि यह समस्या है या नहीं। मैंने सब कुछ करने की कोशिश की है, लेकिन कुछ भी काम नहीं करता है। मैंने अनइंस्टॉल कर दिया है और पोस्टग्रेज और पीजी रत्न दोनों को कई बार स्थापित किया है।

यह मेरी database.yml फ़ाइल है

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

test: &test
  adapter: postgresql
  encoding: unicode
  database: metals-directory_test
  pool: 5
  username: 
  password: 
  template: template0
  host: localhost
  port: 5432

staging:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

production:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_production
  pool: 5
  username:
  password:
  template: template0
  host: localhost

cucumber:
  <<: *test

2
अपने डेटाबेस में 'होस्ट: लोकलहोस्ट' जोड़ने का प्रयास करें ।yml, इसे stackoverflow.com/a/10793186/919641
सुरेंद्र बोब्बा

1
@ अंजन मैंने पहले ही ऐसा किया था। मैंने उस धागे का उपयोग तब भी किया था जब मैंने पहली बार एक समाधान के लिए शोध शुरू किया था। मैंने अपना database.yml फ़ाइल पोस्ट किया है। आप इस पर एक नज़र डाल सकते हैं। शायद यह मदद कर सकता है।
फलादकिन

अपने pg_hba.conf
Pronix

2
यदि आप उस का उपयोग कर रहे हैं तो पोस्टग्रेज ऐप को चालू करना न भूलें।
पवन कटपल्ली १४'१५ को १p:

1
मुझे @PavanKatepalli ऐप चालू करने की याद दिलाने के लिए धन्यवाद! अच्छी कॉल;)
पकड़ 22

जवाबों:


637

यह बासी PID फ़ाइल की तरह सरल हो सकता है । यह चुपचाप विफल हो सकता है क्योंकि आपके कंप्यूटर ने शटडाउन प्रक्रिया को पूरी तरह से पूरा नहीं किया है जिसका मतलब है कि पोस्टग्रैड्स पीआईडी (प्रक्रिया आईडी) फ़ाइल को नहीं हटाते हैं ।

PID फ़ाइल का उपयोग डाकघरों द्वारा किया जाता है ताकि यह सुनिश्चित किया जा सके कि एक समय में सर्वर का केवल एक उदाहरण चल रहा है। तो जब इसे फिर से शुरू करने के लिए चला जाता है, यह विफल रहता है पहले से ही एक है, क्योंकि पीआईडी फ़ाइल जो बताता है postgres कि सर्वर का एक और उदाहरण शुरू किया गया था (हालांकि यह नहीं चल रहा है, यह सिर्फ बंद करने के लिए मिलता है और पीआईडी को नष्ट नहीं किया था) ।

  1. इसे ठीक करने के लिए PID फ़ाइल को निकालें / नाम बदलें। डेटा निर्देशिका को पोस्टग्रेट करें। होमबॉव का उपयोग करते हुए macOS पर यह /usr/local/var/postgres/या /usr/local/var/log/अन्य प्रणालियों में यह हो सकता है /usr/var/postgres/
  2. यह सुनिश्चित करने के लिए कि यह समस्या है, लॉग फ़ाइल ( server.log) देखें। अंतिम लाइनों पर आप देखेंगे:

FATAL: लॉक फाइल "पोस्टमास्टर।
पीआईडी " पहले से मौजूद है

  1. यदि ऐसा है तो, rm postmaster.pid
  2. अपने सर्वर को पुनरारंभ करें। लॉन्चर (होमब्रेव के साथ) का उपयोग करते हुए एक मैक पर निम्नलिखित कमांड सर्वर को पुनरारंभ करेंगे।

    launchctl unload homebrew.mxcl.postgresql.plist  
    launchctl load -w homebrew.mxcl.postgresql.plist
    

    या ब्रू के नए संस्करणों पर

    brew services restart postgresql

24
# 2 एक शानदार सुझाव है: "server.log की जाँच करें"। मेरी त्रुटि वास्तव में योसेमाइट में अपग्रेड होने के कारण थी, सर्वर लॉग ने कहा FATAL: could not open directory "pg_tblspc": No such file or directory:। इस जवाब ने मुझे उस समस्या के साथ मदद की stackoverflow.com/questions/25970132/…
पॉल कप्लॉन

20
मैंने इसे सिर्फ इसलिए उकेरा क्योंकि इसने मुझे समस्या को ठीक करने के लिए काफी कुछ दिया है। मैंने pg ( gem uninstall pg), अनइंस्टॉल किए गए पोस्टग्रेज ( brew uninstall postgres) को अनइंस्टॉल किया , फिर पोस्टग्रेज फ़ोल्डर को nuked किया जो बासी सामान के एक झुंड के साथ लिंच कर रहा था ( rm -rf /usr/local/var/postgres)। एक रिबूट के बाद brew install postgres, ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents, launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist, और ARCHFLAGS="-arch x86_64" gem install pg। मुझे नहीं पता कि मैंने इसे काम करने से पहले कितने अन्य समाधान की कोशिश की।
IANNNN

2
क्या पोस्टमास्टर.ओपीटी फाइल पोस्टमास्टर.पीड फ़ाइल के समान है?
ARTLoe

31
नए ब्रू यूज़र्स के लिए, # 4 के लिए कमांड हैbrew services restart postgresql
स्ट्रीटलॉगिक्स

7
मेरे लिए (MAC, होमब्रे) लॉग फ़ाइल थी/usr/local/var/log/postgres.log
DZack

44

बहुत खोज और विश्लेषण के बाद, मुझे एक समाधान मिला यदि आप उबंटु का उपयोग कर रहे हैं तो बस अपने टर्मिनल में इस कमांड को लिखें और एंटर करें

sudo service postgresql restart

यह आपके PostgreSQL को पुनः आरंभ करेगा, मुझे आशा है कि यह आपके लिए उपयोगी होगा।


3
धन्यवाद 1000 बार। मैंने अभी अपना ubuntu संस्करण उन्नत किया है और यह मेरे लिए तय किया है।
मौरिसियो मोरेस

सवाल का जवाब OSX Mavericks को संदर्भित करता है, यह उबटन उबंटू प्रतिष्ठानों के लिए आसान है जब माइग्रेशन या सर्वर स्टार्टअप में कुछ विचित्र होता है।
जेरोम

39

यह समस्या तब आती है जब पोस्टग्रेट्स ठीक से बंद नहीं होते हैं। यहां मैंने तीन सरल चरणों में इस मुद्दे को हल किया है।

चरण 1: अपनी पोस्ट निर्देशिका निर्देशिका पर जाएं

मैक यूजर्स को इसमें मिलेगा /usr/local/var/postgres, अन्य लोग देख सकते हैं /usr/var/postgres/

चरण 2:.pid इस कमांड को चलाकर फाइल को निकालें ।

rm postmaster.pid

चरण 3: अपने सर्वर को पुनरारंभ करें

मैक उपयोगकर्ता

brew services restart postgresql

लिनक्स उपयोगकर्ता

sudo service postgresql restart

अंत में अपने ऐप को पुनः आरंभ करें और आप जाने के लिए अच्छे हैं।


33

मैं क्रिस स्लेड के उत्तर का पालन करके समस्या को हल करने में कामयाब रहा, लेकिन सर्वर को पुनरारंभ करने के लिए, मुझे निम्नलिखित कमांड का उपयोग करना पड़ा:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

मैंने यहां पाया (नीचे की ओर नीचे pjammer का उत्तर)


25

क्या आपके पास आपके सिस्टम में पोस्टग्रेजल स्थापित है? यदि नहीं, तो Postgresql इंस्टॉल करें देखें । आपके सिस्टम में सफलतापूर्वक पोस्टग्रैक्स्ल को एकीकृत करने के बाद आप अपने सिस्टम टर्मिनल में ऐसा कुछ लिख सकते हैं:

which psql
#=> /usr/bin/psql

उसके बाद आपको इस तरह postgresql में एक उपयोगकर्ता और डेटाबेस बनाने की आवश्यकता है:

sudo su - postgres
psql

तब आप अपने टर्मिनल के भीतर निम्नलिखित देख सकते हैं

postgres=#

वहां टाइप करें:

CREATE USER yourname WITH PASSWORD 'passwordhere';
CREATE DATABASE metals-directory_production  WITH OWNER yourname;
GRANT ALL PRIVILEGES ON DATABASE metals-directory_production TO yourname;

जब आप ऐसा करते हैं, तो आपको अपने को सही करने की आवश्यकता होती है database.yml। शायद आपको ऐसा कुछ चाहिए:

development:
  adapter: postgresql
  encoding: unicode
  database: metals-directory_development
  pool: 5
  username: yourname
  password: passwordhere   ### password you have specified within psql
  host: localhost
  port: 5432               ### you can configure it in file postgresql.conf

इसके अलावा अगर आपको पोस्टग्रैस्कल की समस्या है, तो pg_hba.conf की जांच करना अच्छा है


1
मैंने इसे स्थापित किया है, लेकिन स्थान / usr / स्थानीय / बिन / psql पर है और जब मैं sudo -u चलाता हूं तो यह sudo कहता है: अज्ञात उपयोगकर्ता: postgres
fadelakin

यदि आप अपने ऐप में pg का उपयोग करना चाहते हैं तो psql को काम करना चाहिए। टर्मिनल साइकल मेटल्स-डायरेक्टरी_डेवलपमेंट में टाइप करें। कोई परिणाम? यदि नहीं, तो पोस्टग्रेज को पुन: स्थापित करने का प्रयास करें उदाहरण के लिए यह प्रयास करें
मिहेल डेविडेन्कोव

जब मैं psql metal-directory_development चलाता हूं तो मुझे psql मिलता है: सर्वर से कनेक्ट नहीं हो सका: ऐसी कोई फ़ाइल या निर्देशिका नहीं है जो सर्वर स्थानीय रूप से चल रहा है और यूनिक्स डोमेन सॉकेट "/tmp/.s.PGSQL.5432" पर कनेक्शन स्वीकार कर रहा है? मैं एक शुरुआती रेलर हूँ और मुझे इसका कोई मतलब नहीं है। मैंने कई बार पोस्टग्रेट्स को फिर से स्थापित करने की कोशिश की है लेकिन कोई भाग्य नहीं।
फिलाडाकिन 12

23

के साथ मुद्दों के इन प्रकार को ठीक करने के Postgres और साथ काम करने के लिए Postgres पर Mac OSX, यह शायद है सबसे अच्छा और सबसे आसान समाधान है कि मैं अब तक पाया है:

http://postgresapp.com/

बस डाउनलोड करें, स्थापित करें और खुश रहें :)


19
  1. स्थापना रद्द करें स्नातकोत्तर:

    gem uninstall pg
  2. स्थापना रद्द करें:

    brew uninstall postgres
  3. Nuke पोस्टग्रेज फ़ोल्डर जो बासी सामान के एक झुंड के साथ सुस्त हो सकता है:

    rm -rf /usr/local/var/postgres
  4. रिबूट (शायद अनावश्यक)

  5. स्थापना रद्द करें पृष्ठ:

    brew install postgres
  6. क्रिस स्लेड के जवाब में मेरी टिप्पणी ने कठिन रास्ता शुरू कर दिया है, अब मैं काढ़ा सेवाओं का उपयोग करता हूं जिसने मेरे जीवन को कई तरीकों से सरल बना दिया है:

    brew install services
  7. और इसके साथ पीजी शुरू करें:

    brew services start postgresql
  8. मणि पुनः स्थापित करें:

    gem install pg

और बोबसयोरुनकल।


3
इस विधि के साथ सावधान रहें ... यह एक झुलसा हुआ पृथ्वी का दृष्टिकोण है और वर्तमान में आपके पास मौजूद किसी भी स्थानीय डेब को नष्ट कर देगा। पर एक नजर है github.com/copiousfreetime/launchy है जहाँ आप सक्षम हो सकता है lunchy stop postgres, जिसके बादlunchy start postgres
lacostenycoder

ubuntu पर मेरा मानना ​​है कि sudo apt purge postgresqlया किसी भी अन्य postgresqlपचड़े को पर्याप्त होना चाहिए और यह सब कुछ नष्ट कर देगा।
फैब्रीज़ियो बर्टोग्लियो

मैंने ऐसा किया और अब निम्न त्रुटि प्राप्त करता है: postgresql_adapter.rb: 709: इन 'इन रेस्क्यू इन कनेक्ट': FATAL: डेटाबेस "प्रोजेक्ट3_डेवलपमेंट" मौजूद नहीं है (ActiveRecord :: NoDecabaseError)। मुझे क्या करना चाहिए ? मैं वास्तव में माणिक में डेटाबेस देख सकता हूं।
फ्रेंकी डौल

13

जांचें कि फ़ाइल postgresql.conf (पर ubuntuमें है /etc/postgresql/XX/main/postgresql.conf ) और लाइन जो दर्शाता है कि:

listen_addresses="localhost"

इसे बदलने का प्रयास करें:

listen_addresses="*"

यह हर IP को स्वीकार करेगा, अगली पंक्ति जो कहती है उसे जांचें:

port=5432

और चेक करते हैं, अपने database.yml का एक ही बंदरगाह है मेरी PostgreSQL-9.2 उपयोग पर डिफ़ॉल्ट रूप से 5433 के बजाय 5432 , मत भूलना करने के लिए पुनः आरंभ postgres सर्वर,

शुभ लाभ!


यह मेरी समस्या भी थी। मुझे संदेह है कि ऐसा इसलिए हुआ क्योंकि मेरे पास पहले से ही 9.3 चल रहा था जब मैंने "अपग्रेड" करने की कोशिश की (यानी 9.5 स्थापित)। मुझे लगता है कि यह विनम्र होने की कोशिश कर रहा था और मौजूदा स्थापित / प्रक्रिया को संभालने के बजाय एक अलग बंदरगाह पर समानांतर में चलने के लिए कॉन्फ़िगर कर रहा था।
जोएल फ़ाउस

12

जैसा कि @Magne द्वारा वर्णित किया गया है, त्रुटि को PostgreSQL के PG::ConnectionBad - could not connect to server: Connection refusedएक प्रमुख / लघु संस्करण उन्नयन (जैसे 9.5 -> 9.6या 9 -> 10) के बाद प्रस्तुत किया जा सकता है ।

brew upgrade postgresqlPostgreSQL संस्करण 9.6 की रिलीज़ के बाद चलने के बाद मुझे यह त्रुटि मिली । समस्या यह है कि प्रमुख / मामूली संस्करण के उन्नयन के लिए पुराने संस्करण को नए संस्करण में स्थानांतरित करने के लिए अतिरिक्त चरणों की आवश्यकता होती है।

अगर यह आपकी समस्या है तो जांच कैसे करें

आप जांच कर सकते हैं कि होमब्रेव के साथ स्थापित नवीनतम काढ़ा फार्मूला पोस्टग्रेजक्यूएल संस्करण की जांच करके यह समस्या है ...

$ brew info postgresql

/usr/local/Cellar/postgresql/9.5.4_1 (3,147 files, 35M)
Poured from bottle on 2016-10-14 at 13:33:28
/usr/local/Cellar/postgresql/9.6.1 (3,242 files, 36.4M) *
Poured from bottle on 2017-02-06 at 12:41:00

... और फिर इसकी तुलना वर्तमान PG_VERSION से की जा रही है

$ cat /usr/local/var/postgres/PG_VERSION
9.5

यदि PG_VERSION नवीनतम शराब बनाने के फार्मूले से कम है और अंतर एक प्रमुख / मामूली संस्करण परिवर्तन है, तो यह संभवतः आपकी समस्या है।

कैसे ठीक करें (यानी डेटा को अपग्रेड कैसे करें)

नीचे दिए गए निर्देश 9.5 से 9.6 तक के उन्नयन के लिए हैं। अपने खुद के उन्नयन के लिए उपयुक्त के रूप में संस्करण संख्या बदलें

चरण 1. सुनिश्चित करें कि PostgreSQL बंद है:

$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, with Homebrew...
$ brew services stop postgresql

चरण 2. एक नया प्राचीन डेटाबेस बनाएं:

$ initdb /usr/local/var/postgres9.6 -E utf8

चरण 3. जाँच करें कि पुराने और नए बाइनरी संस्करण क्या हैं:

$ ls /usr/local/Cellar/postgresql/
9.5.3   9.5.4   9.6.1

ध्यान दें कि इस उदाहरण में मैं 9.5.4 बाइनरी से 9.6.1 बाइनरी में अपग्रेड कर रहा हूं

चरण 4. वर्तमान डेटा को pg_upgrad उपयोगिताका उपयोग करके नए डेटाबेस में माइग्रेट करें।

$ pg_upgrade \
  -d /usr/local/var/postgres \
  -D /usr/local/var/postgres9.6 \
  -b /usr/local/Cellar/postgresql/9.5.4/bin/ \
  -B /usr/local/Cellar/postgresql/9.6.1/bin/ \
  -v
  • -d ध्वज वर्तमान डेटा निर्देशिका को निर्दिष्ट करता है
  • -D ध्वज नई डेटा निर्देशिका बनाने के लिए निर्दिष्ट करता है
  • -b पुरानी बाइनरी निर्दिष्ट करता है
  • -B वह नया बाइनरी निर्दिष्ट करता है जिसे हम अपग्रेड कर रहे हैं

चरण 5. पुराने डेटा निर्देशिका को बाहर ले जाएं

$ mv /usr/local/var/postgres /usr/local/var/postgres9.5

चरण 6। नव निर्मित डेटा निर्देशिका को स्थानांतरित करें जहां PostgreSQL यह होने की उम्मीद करता है

$ mv /usr/local/var/postgres9.6 /usr/local/var/postgres

Step 7. PostgreSQL को फिर से शुरू करें

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
# or, if you're running a current version of Homebrew
$ brew services start postgresql

चरण 8. यदि आप रेल के लिए पीजी रत्न का उपयोग कर रहे हैं, तो आपको रत्न को अनइंस्टॉल करके और पुनः इंस्टॉल करके पुन: स्थापित करना चाहिए (यदि आप पीजी रत्न का उपयोग नहीं कर रहे हैं तो इस चरण को छोड़ दें)

$ gem uninstall pg
$ gem install pg

चरण 9. (वैकल्पिक) अपने आप को आश्वस्त करने के बाद कि सब कुछ ठीक चल रहा है, आप निम्न कमांड के साथ कुछ डिस्क स्थान प्राप्त कर सकते हैं:

brew cleanup postgresql

... और यदि आप वास्तव में बहादुर महसूस कर रहे हैं, तो आप निम्नलिखित कमांड के साथ पुरानी पोस्टग्रेक्यूएल डेटा निर्देशिका को हटा सकते हैं

rm -rf /usr/local/var/postgres9.5/

(यह उत्तर एक उत्कृष्ट ब्लॉग पोस्ट https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ पर कुछ परिवर्धन के साथ आधारित है )



7

जैसा कि ऊपर सुझाव दिया गया है, मैंने अभी अपने मैक पर पोस्टग्रेज ऐप खोला , ओपन पर क्लिक किया Psql, psqlविंडो को बंद किया , अपने टर्मिनल में अपने रेल सर्वर को फिर से शुरू किया , और यह फिर से काम कर रहा था, कोई और त्रुटि नहीं।

हाथी पर भरोसा करें: http://postgresapp.com/


6

मुझे अपने मैक को Osx Movaje पर अपडेट करने के बाद यही समस्या आई।

मुझे यह समाधान मिला:

अपने टर्मिनल में सबसे पहले कमांड लाइन का प्रयास करें:

brew services restart postgresql

अगर कुछ नहीं बदला:

ps aux | grep postgres

अगर अभी भी कुछ नहीं बदला:

ls -ls | grep post

इसे ठीक करने के लिए अंतिम आदेश, पोस्ट फाइल को रूट से निष्पादित करके हटा दिया गया:

rm /usr/local/var/postgres/postmaster.pid

और फिर :

brew services restart postgresql

Berziiii से: https://github.com/ga-wdi-boston/capstone-project/issues/325

उम्मीद है कि मदद मिलेगी :)

सादर !!


5

यदि आप एक करने के बाद इस समस्या को हिट brew upgrade(f.ex एक नए प्रमुख संस्करण के लिए जो उन्नत बनाया postgres 9.3.0के लिए 9.4.0या अधिक) है, तो इस कार्य करें:

@ dmitrygusev का फिक्स https://github.com/Homebrew/homebrew/issues/35240 से

निम्नलिखित आधिकारिक [Postgresql] माइग्रेशन गाइड ने मदद की:

brew switch postgres 9.3.5    # presuming you already installed 9.4.1
pg_dumpall > outputfile
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
mv /usr/local/var/postgres /usr/local/var/postgres.old
brew switch postgres 9.4.1
initdb -D /usr/local/var/postgres
psql -d postgres -f outputfile

बस इतना ही। जांचें कि क्या आयात ठीक हुआ, फिर बैकअप हटाएं:

rm outputfile
rm -Rf /usr/local/var/postgres.old

यहां मुद्दा यह है कि पोस्टग्रेज के एक प्रमुख संस्करण के उन्नयन पर, अपने डेटाबेस को फिर से बनाना / माइग्रेट करना आवश्यक है। और संभवतः chownनिर्देशिका या मैन्युअल कॉल initdb

यह भी देखें: डेटा खोए बिना वर्जन 9.5 से वर्जन 9.6 तक पोस्टग्रेजक्यूएल को अपग्रेड कैसे करें?


यदि आप Homebrew का उपयोग नहीं कर रहे हैं, तो कुछ अन्य टिप्स, जो काम आ सकते हैं:

मैन्युअल रूप से PG सर्वर कैसे बंद करें:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop

मैन्युअल रूप से पीजी सर्वर कैसे शुरू करें:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start


4

अपने postgres फ़ाइल उस में हो सकता है का पता लगाएँ /usr/local/var/postgres/या में /usr/var/postgres/और फिर हटाना postmaster.pidउस फ़ोल्डर में फ़ाइल मौजूद है।


3

डाल host: localhostमें database.ymlफ़ाइल और इस कमांड चलाएँ:

rake db:create db:migrate  

2

Postgres ऐप वाले मैक उपयोगकर्ता एप्लिकेशन को खोलना चाहते हैं (स्पॉटलाइट सर्च Postgres खोजें या अपने मेनू बार में हाथी आइकन ढूंढें)। उसमें आपको संदेश के साथ एक लाल X दिखाई दे सकता है: "बासी पोस्टमास्टर.पिड फ़ाइल"। दुर्भाग्य से एक स्पॉटलाइट खोज इस फ़ाइल का स्थान नहीं दिखाएगी। "सर्वर सेटिंग्स ..." पर क्लिक करें, और खुलने वाले संवाद बॉक्स में, डेटा निर्देशिका को खोलने के लिए "शो" बटन पर क्लिक करें। एक फ़ोल्डर में नेविगेट करें (मेरे लिए यह "var-10" था), और postmaster.pidफ़ाइल को हटा दें ।

Postgres ऐप पर वापस जाएं और स्टार्ट बटन पर क्लिक करें। उस लाल X को "रनिंग" संदेश के साथ हरे रंग के चेक मार्क में बदलना चाहिए। अब आपको rails serverटर्मिनल की तरह रेल कमांड को सफलतापूर्वक चलाने में सक्षम होना चाहिए ।

एप्लिकेशन सर्वर सेटिंग्स को पोस्टग्रेट करें - डेटा निर्देशिका दिखाएं


इससे मेरे लिए हल हो गया। समाधान के लिए बहुत बहुत धन्यवाद! यह एक प्रक्रिया थी!
बॉयड

2

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

मैं स्क्रीन के शीर्ष पर गया (मैं मैक पर हूं) और छोटे हाथी आइकन पर क्लिक करके 'स्टार्ट' पर क्लिक किया।

हमारे सर्वर को चालू नहीं करता है।

उम्मीद है कि यह किसी के लिए एक सरल समाधान प्रदान करता है।


1

यह निश्चित रूप से @ क्रिस स्लेड का जवाब था जिसने मुझे मदद की।

मैंने उपयोगी होने पर उन शेष प्रक्रियाओं को मारने के लिए एक छोटी स्क्रिप्ट लिखी:

kill_postgres() {
  if [[ $* -eq "" ]]; then
    echo "Usage: 'kill_postgres <db_name>' to kill remaining instances (Eg. 'kill_postgres my_app_development')"
  else
    gksudo echo "Granted sudo"
    pids="$(ps xa | grep postgres | grep $* | awk '{print $1}' | xargs)"
    if [[ $pids -eq "" ]]; then
      echo "Nothing to kill"
    else
      for pid in "${pids[@]}"
      do
        echo "Killing ${pid}"
        sudo kill $pid
        echo "Killed ${pid}"
      done
      kill_postgres $*
    fi
  fi
}

1

मुझे उत्पादन में समान समस्या थी (विकास सब कुछ काम करता है), मेरे मामले में डीबी सर्वर ऐप के समान मशीन पर नहीं है , इसलिए अंत में जो काम किया गया है वह केवल लिखने के लिए माइग्रेट करना है:

bundle exec rake db:migrate RAILS_ENV=production

और फिर सर्वर और सब कुछ काम फिर से शुरू करें।


1

मुझे पता है कि यह देर हो चुकी है लेकिन किसी की मदद कर सकती है। मैं एक ही मुद्दा रहा था। पता चलता है कि मैं 9.1 और 9.5 पोस्टग्रेज के दो संस्करण चाहता हूं। मैंने 9.1 और 9.5 की स्थापना रद्द की और 9.5 को फिर से स्थापित किया और यह मेरे लिए काम किया।



1

मुझे भी यही समस्या थी। मैं PostgreSQLलॉग फ़ाइलों की अंतिम पंक्ति की जाँच करता हूँ /var/log/postgresql। फ़ाइल /etc/postgresql/9.5/main/postgresql.conf में एक अपरिचित कॉन्फ़िगरेशन पैरामीटर था । postgresql.confमेरी समस्या को हल करने में त्रुटि लाइन पर टिप्पणी करना ।


1

मेरी समस्या मेरे application.yml फ़ाइल में थी। मेरे डेटाबेस urlपर herokuबंदरगाह 5342. का उपयोग नहीं कर अपने चेक था herokuconfig var DATABASE_URL। यकीन है कि मैचों के साथ वास्तव में अपने में ही बनाने application.yml लागू डेटाबेस के लिए।


1

मेरे पास एक ही समस्या थी, इस स्पष्टीकरण ने मेरे लिए इसे हल किया: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrad/

महत्वपूर्ण कदम मेरे /usr/local/var/postgres/server.log की पूंछ को देख रहा था , कि मुझे यह देखने दें कि वास्तविक समस्या क्या थी, जो कि मैंने PostgreSQL के उन्नयन की प्रक्रिया को पूरी तरह से पूरा नहीं किया था


यहाँ भी ऐसी ही स्थिति है - मेरे लिए भी महत्वपूर्ण है server.log। यहाँ मेरा जवाब मिला: stackoverflow.com/questions/25970132/…
नाथन वालेस

1

मैं बस यह कमांड चलाता हूं sudo service postgresql restart और सब कुछ फिर से काम करता है।


0

मैंने रेल सर्वर बंद कर दिया, दौड़कर rake db:migrateअपनी शुरुआत की rails s


0

मैं इस त्रुटि के बाद भाग गया brew upgradeजिसमें एक पोस्टग्रैस्कल अपडेट किया गया था। मैंने पाया कि इस महान पोस्ट से अपनी समस्या को कैसे ठीक किया जाए। मैं अपने सभी मौजूदा डेटाबेस पर वापस जाने और चलने और यहां तक ​​कि माइग्रेट करने में सक्षम था। https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade


0

मुझे बस यह समस्या थी और मेरे लिए सुझाए गए किसी भी समाधान ने काम नहीं किया। बहुत गुगली करने के बाद, मुझे एक उपाय मिला। इसी से मेरा काम बना है।

सबसे पहले, मुझे सर्वर शुरू करने के लिए इस कमांड को चलाना था और मुझे लगता है कि यह कॉन्फिग फाइल का स्थान निर्धारित कर रहा है।

pg_ctl -D /usr/local/var/postgres start && brew services start postgresql

फिर मैंने पोस्टग्रेज तक पहुंचने के लिए इस कमांड को चलाया

psql postgres

और पोस्टग्रेट्स प्रॉम्प्ट पर फिर मैंने भूमिकाओं को सूचीबद्ध करने के लिए "\ du" टाइप किया

postgres=# \du

पोस्टग्रेज भूमिका गायब थी इसलिए मुझे इसे इस कमांड के साथ बनाना पड़ा

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

इससे मेरी समस्या हल हो गई और मुझे उम्मीद है कि इससे किसी और को मदद मिलेगी।


0

आपको postmaster.pidफ़ाइल को हटाने की आवश्यकता नहीं है , क्योंकि यह डेटा भ्रष्टाचार को आमंत्रित कर सकता है।

विकल्प? बस killप्रक्रिया (उपयोग न करें kill -9, बस एक साधारण हत्या करेंगे)।

तो बस पोस्टग्रेज सर्वर को पुनरारंभ करें और आप जाने के लिए अच्छे हैं!

इसे प्राप्त करने के लिए चरण यहाँ दिए गए हैं:

  1. पता लगाएँ और postmaster.pidफ़ाइल खोलें (मेरा मैक सिएरा पर है)

    vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid

  2. PID की प्रतिलिपि बनाएँ - यह postmaster.pidफ़ाइल की पहली पंक्ति का नंबर है

  3. इस प्रक्रिया को kill PIDमारें, उदाहरण के लिए, यदि मेरा पीआईडी ​​381 है, तो मैं करूंगाkill 381
  4. पोस्टर्स को पुनरारंभ करें - यदि काढ़ा का उपयोग करते हैं, तो करें brew services start postgresql। या यदि पोस्टग्रैसेज का उपयोग कर रहे हैं, तो बस startबटन पर क्लिक करें

0

Homebrew पैकेज मैनेजर में लॉन्च करने के लिए स्वचालित रूप से शुरू करने के लिए लॉंचिक्ट प्लास्ट शामिल हैं। अधिक जानकारी के लिए दौड़ें brew info postgres

मैन्युअल रूप से प्रारंभ करें:

pg_ctl -D /usr/local/var/postgres start

मैन्युअल रूप से रोकें:

pg_ctl -D /usr/local/var/postgres stop

स्वचालित रूप से प्रारंभ करें:

"अभी लॉन्च पोस्टग्रेस्कल शुरू करने के लिए और लॉगिन पर पुनः आरंभ करें:"

brew services start postgresql

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