ruby-on-rails - والتاريخ - دليلي تعذر الاتصال بالخادم




PG:: ConnectionBad-تعذر الاتصال بالخادم: تم رفض الاتصال (18)

  1. إلغاء تثبيت pg:

    gem uninstall pg
  2. إلغاء تثبيت postgres:

    brew uninstall postgres
  3. نوك مجلد postgres التي قد تكون باقية مع حفنة من الاشياء التي لا معنى لها في:

    rm -rf /usr/local/var/postgres
  4. إعادة التشغيل (ربما غير ضروري)

  5. إعادة تثبيت pg:

    brew install postgres
  6. تعليقي في إجابة كريس سلايد يبدأ من طريقه الصعبة ، والآن أستخدم خدمات الشراب التي سهّلت حياتي بعدة طرق:

    brew install services
  7. وابدأ بالصفحة مع:

    brew services start postgresql
  8. إعادة تثبيت جوهرة:

    gem install pg

و bobsyouruncle.

في كل مرة أقوم بتشغيل خادم بلدي القضبان 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

هل يستطيع أي أحد مساعدتي؟


أعلم أن هذا قد تأخر ولكن قد يساعد شخص ما. كنت أعاني من نفس المشكلة. تبين أني قمت بإصدارين من postgres 9.1 و 9.5. أنا أزلت 9.1 و 9.5 وركبت 9.5 مرة أخرى وعملت بالنسبة لي.


أوقفت الخادم القضبان ، ركض rake db:migrate وبدأت rails s .


إذا واجهت هذه المشكلة بعد إجراء brew upgrade والتي تمت ترقيتها إلى إصدار رئيسي جديد (f.ex 9.3.0 إلى 9.4.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

المشكلة هنا هي أنه في نسخة رئيسية من ترقية postgres ، من الضروري إعادة إنشاء / ترحيل قاعدة البيانات الخاصة بك. وربما الدلائل chown أو استدعاء initdb يدوياً.

راجع أيضًا: كيفية ترقية PostgreSQL من الإصدار 9.5 إلى الإصدار 9.6 دون فقدان البيانات؟

بعض النصائح الأخرى ، قد تكون مفيدة ، في حالة عدم استخدامك لـ Homebrew:

كيفية إيقاف خادم PG يدويًا:

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

كيف تبدأ خادم PG يدويا:

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


تأتي هذه المشكلة عندما لا تغلق postgres بشكل صحيح. فيما يلي كيفية حل هذه المشكلة في ثلاث خطوات بسيطة.

الخطوة 1: اذهب إلى دليل postgres الخاص بك

سيجد المستخدمون Mac هذا في /usr/local/var/postgres ، قد ينظر آخرون إلى /usr/var/postgres/ .

الخطوة 2: إزالة ملف .pid عن طريق تشغيل هذا الأمر.

rm postmaster.pid

الخطوة 3: إعادة تشغيل الخادم الخاص بك

ماك المستخدمين

brew services restart postgresql

مستخدمو لينكس

sudo service postgresql restart

أخيرًا ، أعد تشغيل تطبيقك وأنت على ما يرام.


تحقق من ملف postgresql.conf (على ubuntu في /etc/postgresql/XX/main/postgresql.conf ) وابحث عن السطر الذي يقول:

listen_addresses="localhost"

حاول تغييره إلى:

listen_addresses="*"

سيكون قبول كل IP ، بعد ذلك تحقق من السطر الذي يقول:

port=5432

وتحقق مما إذا كان هو نفس المنفذ من قاعدة البيانات الخاصة بك. eml ، بشكل افتراضي على بلدي postgresql-9.2 استخدم 5433 بدلاً من 5432 ، لا تنس إعادة تشغيل خادم postgres ،

حظا طيبا وفقك الله!


ربما قمت بإعادة تشغيل جهاز الكمبيوتر الخاص بك ونسيت إطلاق تطبيق Postgres.


قد يرغب مستخدمو Mac مع تطبيق Postgres في فتح التطبيق (البحث في أضواء كاشفة Postgres أو العثور على رمز الفيل في شريط القائمة). في هذه الصفحة ، قد ترى علامة X حمراء تحتوي على الرسالة: "ملف postmaster.pid القديم". للأسف ، لن يُظهر بحث Spotlight موقع هذا الملف. انقر فوق "إعدادات الخادم ..." ، وفي مربع الحوار الذي يفتح ، انقر فوق الزر "إظهار" لفتح "دليل البيانات". انتقل مجلد واحد في (بالنسبة لي كان فار "10") ، وحذف الملف postmaster.pid .

ارجع إلى تطبيق Postgres وانقر على زر Start. يجب أن تتحول علامة X الحمراء إلى علامة تحقق خضراء مع ظهور الرسالة "قيد التشغيل". الآن يجب أن تكون قادراً على تشغيل أوامر Rails بنجاح مثل rails server في المحطة الطرفية.


كان لي نفس المشكلة ، وهذا التفسير حلها بالنسبة لي: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

كانت الخطوة الرئيسية هي النظر إلى ذيل / myr/local/var/postgres/server.log الخاص بي ، والذي سمح لي بمشاهدة المشكلة الحقيقية ، وهو أنني لم أكمل تمامًا عملية ترقية PostgreSQL


كان لي نفس المشكلة. يمكنني التحقق من السطر الأخير من ملفات سجل PostgreSQL في /var/log/postgresql . كانت هناك معلمة تكوين غير معروفة في الملف /etc/postgresql/9.5/main/postgresql.conf . تعليق خط الخطأ في postgresql.conf حل مشكلتي.


كما هو مقترح أعلاه ، فتحت للتو Postgres App على جهاز Mac الخاص بي ، والنقر Psql ، وإغلاق نافذة psql ، وإعادة تشغيل خادم rails في الجهاز الخاص بي ، وكان يعمل مرة أخرى ، ولم يعد هناك خطأ.

ثق الفيل: http://postgresapp.com/


كما هو موضح بواسطةMagne ، الخطأ PG::ConnectionBad - could not connect to server: Connection refused يمكن تقديم الاتصال بعد ترقية إصدار رئيسي / ثانوي (مثل 9.5 -> 9.6 أو 9 -> 10 ) من PostgreSQL.

حصلت على هذا الخطأ بعد أن قمت بتشغيل brew upgrade postgresql بعد إصدار PostgreSQL الإصدار 9.6. المشكلة هي أن ترقيات الإصدار الرئيسية / الثانوية تتطلب خطوات إضافية لترحيل التاريخ القديم إلى الإصدار الجديد.

كيفية التحقق مما إذا كانت هذه هي مشكلتك

يمكنك معرفة ما إذا كانت هذه هي المشكلة عن طريق التحقق من أحدث إصدار صيغة الشراب PostgreSQL المثبتة مع homebrew ...

$ 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_upgrade .

$ 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

الخطوة 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. إذا كنت تستخدم جوهرة الحجر الطبيعي لـ Rails ، فيجب إعادة تجميعها عن طريق إلغاء تثبيت الأحجار الكريمة وإعادة تثبيتها (قم بتخطي هذه الخطوة إذا كنت لا تستخدم gemm)

$ gem uninstall pg
$ gem install pg

الخطوة 9. (اختياري) بعد أن تطمئن نفسك أن كل شيء يعمل بشكل جيد ، يمكنك تشغيل استعادة بعض مساحة القرص باستخدام الأمر التالي:

brew cleanup postgresql

... وإذا كنت تشعر بشجاعة فعلية ، يمكنك حذف دليل بيانات PostgreSQL القديم باستخدام الأمر التالي

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

(يستند هذا الرد على مشاركة مدونة ممتازة https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ مع بعض الإضافات)


لقد تمكنت من حل المشكلة باتباع إجابة كريس سلاد ، ولكن لإعادة تشغيل الخادم ، كان علي استخدام الأوامر التالية:

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

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

وجدت here (إجابة pjammer أسفل في الأسفل)


لقد واجهت هذا الخطأ بعد اتباع brew upgrade حيث تم تحديث postgresql. لقد وجدت بالضبط كيفية إصلاح مشكلتي من هذه المشاركة الرائعة. تمكنت من الحصول على postgres مرة أخرى وتشغيلها وحتى هاجر على جميع قواعد البيانات الموجودة. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade



هل لديك postgresql مثبتة داخل النظام الخاص بك؟ إن لم يكن ، ثم مشاهدة تثبيت postgresql . بعد دمج 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

أيضا إذا كان لديك مشاكل مع postgresql فمن الجيد للتحقق من pg_hba.conf


وضع host: localhost في ملف database.yml وتشغيل هذا الأمر:

rake db:create db:migrate  

يمكن أن تكون بسيطة مثل ملف PID قديم . قد يكون الفشل بصمت لأن الكمبيوتر الخاص بك لم يكمل عملية إيقاف التشغيل بالكامل مما يعني أن postgres لم تحذف ملف PID (معرف العملية).

يتم استخدام ملف PID بواسطة postgres للتأكد من تشغيل مثيل واحد فقط من الخادم في كل مرة. لذا عندما يبدأ التشغيل مرة أخرى ، فإنه يفشل لأنه يوجد بالفعل ملف PID يخبر postgres أنه تم بدء تشغيل نسخة أخرى من الخادم (على الرغم من عدم تشغيله ، إلا أنه لم يصل إلى إيقاف التشغيل وحذف PID) .

  1. لإصلاحها ، قم بإزالة / إعادة تسمية ملف PID. ابحث عن دليل بيانات postgres. على MAC باستخدام homebrew /usr/local/var/postgres/ ، أنظمة أخرى قد تكون /usr/var/postgres/ .
  2. للتأكد من هذه المشكلة ، انظر إلى ملف السجل ( server.log ). في الأسطر الأخيرة سترى:

FATAL: يوجد ملف القفل "postmaster.pid" بالفعل
تلميح: هل مدير مكتب البريد آخر (PID 347) يعمل في دليل البيانات "/ usr / local / var / postgres"؟

  1. إذا كان الأمر كذلك ، rm postmaster.pid
  2. أعد تشغيل الخادم الخاص بك. على جهاز Mac باستخدام launchctl (مع homebrew) ، ستقوم الأوامر التالية بإعادة تشغيل الخادم.

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

    أو على إصدارات أحدث من المشروب

    brew services restart postgresql