Jedes Mal, wenn ich meinen Rails 4.0-Server betreibe, erhalte ich diese Ausgabe.
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>'
Ich verwende Mavericks OS X 10.9, daher weiß ich nicht, ob dies das Problem ist. Ich habe alles versucht, was ich konnte, aber nichts scheint zu funktionieren. Ich habe jetzt sowohl postgres als auch das pg gem mehrmals deinstalliert und installiert.
Dies ist meine database.yml-Datei
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
ruby-on-rails
ruby
ruby-on-rails-4
database-connection
pg
Fadelakin
quelle
quelle
Antworten:
Es könnte so einfach sein wie eine veraltete PID-Datei . Möglicherweise schlägt dies stillschweigend fehl, da Ihr Computer den Herunterfahrvorgang nicht vollständig abgeschlossen hat. Dies bedeutet, dass postgres die PID- Datei (Prozess-ID) nicht gelöscht hat .
Die PID-Datei wird von postgres verwendet, um sicherzustellen, dass jeweils nur eine Instanz des Servers ausgeführt wird. Wenn es erneut gestartet wird, schlägt es fehl, da bereits eine PID- Datei vorhanden ist, die postgres mitteilt, dass eine andere Instanz des Servers gestartet wurde (obwohl sie nicht ausgeführt wird, konnte sie die PID nicht herunterfahren und löschen). .
/usr/local/var/postgres/
oder auf/usr/local/var/log/
anderen Systemen/usr/var/postgres/
.server.log
), um sicherzustellen, dass dies das Problem ist . In den letzten Zeilen sehen Sie:rm postmaster.pid
Starten Sie Ihren Server neu. Auf einem Mac mit launchctl (mit Homebrew) starten die folgenden Befehle den Server neu.
ODER bei neueren Versionen von Brew
quelle
FATAL: could not open directory "pg_tblspc": No such file or directory
. Diese Antwort half mir bei diesem Problem stackoverflow.com/questions/25970132/…gem uninstall pg
) deinstalliert, postgres (brew uninstall postgres
) deinstalliert und dann den Postgres-Ordner, der mit ein paar veralteten Sachen in (rm -rf /usr/local/var/postgres
) verweilte, zerstört . Nach einem Neustartbrew install postgres
,ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
,launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
, undARCHFLAGS="-arch x86_64" gem install pg
. Ich weiß nicht, wie viele andere Lösungen ich ausprobiert habe, bevor dies funktioniert.brew services restart postgresql
/usr/local/var/log/postgres.log
Nach langem Suchen und Analysieren habe ich eine Lösung gefunden, wenn Sie Ubuntu verwenden. Schreiben Sie diesen Befehl einfach in Ihr Terminal und drücken Sie die Eingabetaste
Dadurch wird Ihr PostgreSQL neu gestartet. Ich hoffe, dies ist hilfreich für Sie.
quelle
Dieses Problem tritt auf, wenn postgres nicht ordnungsgemäß heruntergefahren wird. So habe ich dieses Problem in drei einfachen Schritten gelöst.
Schritt 1: Wechseln Sie in Ihr Postgres-Verzeichnis
Mac-Benutzer finden dies in
/usr/local/var/postgres
, andere sehen es sich möglicherweise an/usr/var/postgres/
.Schritt 2: Entfernen Sie die
.pid
Datei, indem Sie diesen Befehl ausführen .Schritt 3: Starten Sie Ihren Server neu
Mac-Benutzer
Linux-Benutzer
Starten Sie schließlich Ihre App neu und Sie können loslegen.
quelle
Ich habe es geschafft, das Problem zu lösen, indem ich der Antwort von Chris Slade gefolgt bin, aber um den Server neu zu starten, musste ich die folgenden Befehle verwenden:
das habe ich hier gefunden (pjammers antwort unten)
quelle
Haben Sie postgresql in Ihrem System installiert? Wenn nicht, sehen Sie sich postgresql installieren an . Nachdem Sie postgresql erfolgreich in Ihr System integriert haben, können Sie Folgendes in Ihr Systemterminal eingeben :
Danach müssen Sie einen Benutzer und eine Datenbank in postgresql wie folgt erstellen:
Dann können Sie Folgendes in Ihrem Terminal sehen
Geben Sie dort ein:
Nachdem Sie dies getan haben, müssen Sie Ihre korrigieren
database.yml
. Wahrscheinlich brauchen Sie so etwas:Auch wenn Sie Probleme mit postgresql haben, ist es eine gute Idee, pg_hba.conf zu überprüfen
quelle
Um diese Art von Problemen mit fix Postgres und zur Arbeit mit Postgres auf
Mac OSX
, ist dies wahrscheinlich die beste und die einfachste Lösung , die ich bisher gefunden:http://postgresapp.com/
Einfach herunterladen, installieren und glücklich sein :)
quelle
Deinstallieren Sie pg:
Deinstallieren Sie postgres:
Nuke den Postgres-Ordner, in dem sich möglicherweise ein paar veraltete Sachen befinden:
Neustart (möglicherweise nicht erforderlich)
Neu installieren pg:
Mein Kommentar in Chris Slades Antwort beginnt auf die harte Tour. Jetzt benutze ich Brauservices, die mein Leben in vielerlei Hinsicht vereinfacht haben:
Und fang damit an:
Installieren Sie den Edelstein neu:
Und Bobsyouruncle.
quelle
lunchy stop postgres
lunchy start postgres
sudo apt purge postgresql
jedes anderepostgresql
Pachage ausreichen und es wird alles zerstören.Überprüfen Sie die Datei postgresql.conf (on
ubuntu
befindet sich in /etc/postgresql/XX/main/postgresql.conf ) und suchen Sie nach der Zeile mit der Aufschrift :Versuchen Sie es zu ändern in:
Es würde jede IP akzeptieren, als nächstes überprüfen Sie die Zeile, die sagt:
und prüfen , ob der gleich Port Ihren database.yml ist standardmäßig auf meiner postgresql-9.2 Verwendung 5433 statt 5432 , vergessen Sie nicht starten den Postgres - Server,
Viel Glück!
quelle
Wie von @Magne beschrieben, kann der Fehler
PG::ConnectionBad - could not connect to server: Connection refused
nach einem Upgrade der Haupt- / Nebenversion (z. B.9.5 -> 9.6
oder9 -> 10
) von PostgreSQL angezeigt werden .Ich habe diesen Fehler erhalten, nachdem ich ihn
brew upgrade postgresql
nach der Veröffentlichung von PostgreSQL Version 9.6 ausgeführt habe. Das Problem ist, dass für Upgrades der Haupt- / Nebenversion zusätzliche Schritte erforderlich sind, um das alte Datum auf die neue Version zu migrieren.So überprüfen Sie, ob dies Ihr Problem ist
Sie können überprüfen, ob dies das Problem ist, indem Sie die neueste PostgreSQL-Version der Brühformel überprüfen, die mit Homebrew ...
... und dann mit der aktuellen PG_VERSION vergleichen
Wenn die PG_VERSION kleiner als die neueste Brühformel ist und der Unterschied in einer Änderung der Haupt- / Nebenversion besteht, ist dies wahrscheinlich Ihr Problem.
So beheben Sie das Problem (dh wie aktualisieren Sie die Daten)
Die folgenden Anweisungen gelten für ein Upgrade von 9.5 auf 9.6. Ändern Sie die Versionsnummern entsprechend Ihrem eigenen Upgrade
Schritt 1. Stellen Sie sicher, dass PostgreSQL ausgeschaltet ist:
Schritt 2. Erstellen Sie eine neue makellose Datenbank:
Schritt 3. Überprüfen Sie die alten und neuen Binärversionen:
Beachten Sie, dass ich in diesem Beispiel ein Upgrade von 9.5.4 binär auf 9.6.1 binär durchführe
Schritt 4. Migrieren Sie die aktuellen Daten mit demDienstprogramm pg_upgrade in die neue Datenbank.
-d
Flag gibt das aktuelle Datenverzeichnis an-D
Flag gibt das neu zu erstellende Datenverzeichnis an-b
Gibt die alte Binärdatei an-B
Gibt die neue Binärdatei an, auf die wir aktualisierenSchritt 5. Verschieben Sie das alte Datenverzeichnis aus dem Weg
Schritt 6. Verschieben Sie das neu erstellte Datenverzeichnis an die Stelle, an der PostgreSQL es erwartet
Schritt 7. Starten Sie PostgreSQL erneut
Schritt 8. Wenn Sie den pg-Edelstein für Rails verwenden, sollten Sie ihn neu kompilieren, indem Sie den Edelstein deinstallieren und neu installieren (überspringen Sie diesen Schritt, wenn Sie den pg-Edelstein nicht verwenden).
Schritt 9. (optional) Nachdem Sie sich vergewissert haben, dass alles in Ordnung ist, können Sie mit dem folgenden Befehl etwas Speicherplatz zurückgewinnen:
... und wenn Sie sich wirklich mutig fühlen, können Sie das alte PostgreSQL-Datenverzeichnis mit dem folgenden Befehl löschen
(Diese Antwort basiert auf einem ausgezeichneten Blog-Beitrag https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ mit einigen Ergänzungen)
quelle
Das hat mir wirklich geholfen.
Referenz: http://alumni.lewagon.org/questions/60
quelle
Wie oben vorgeschlagen, habe ich gerade die Postgres-App auf meinem Mac geöffnet
Psql
, auf Öffnen geklickt , daspsql
Fenster geschlossen , meinen Rails-Server in meinem Terminal neu gestartet und es hat wieder funktioniert, kein Fehler mehr.Vertrauen Sie dem Elefanten: http://postgresapp.com/
quelle
Ich habe das gleiche Problem, nachdem ich meinen Mac auf Osx Movaje aktualisiert habe.
Ich habe diese Lösung gefunden:
Versuchen Sie zuerst die folgende Befehlszeile in Ihrem Terminal:
Wenn sich nichts ändert:
Wenn sich noch nichts ändert:
Der letzte Befehl, um das Problem zu beheben, entfernte die Postgres-Sperrdatei durch Ausführen von root:
und dann :
Von berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325
Hoffe das wird helfen :)
Grüße !!
quelle
Wenn Sie auf dieses Problem
brew upgrade
stoßen, nachdem Sie ein Postgres-Upgrade auf eine neue Hauptversion (z. B.9.3.0
auf9.4.0
oder höher) durchgeführt haben, gehen Sie folgendermaßen vor:Das Problem hierbei ist, dass bei einem größeren Versions-Upgrade von Postgres die Datenbank neu erstellt / migriert werden muss. Und möglicherweise
chown
Verzeichnisse oder manuell aufrufeninitdb
.Siehe auch: Wie kann ich PostgreSQL von Version 9.5 auf Version 9.6 aktualisieren, ohne Daten zu verlieren?
Einige andere Tipps, die nützlich sein können, falls Sie Homebrew nicht verwenden:
So stoppen Sie den PG-Server manuell:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log stop
So starten Sie den PG-Server manuell:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
quelle
Suchen Sie Ihre Postgres Datei , um sie in sein könnte
/usr/local/var/postgres/
oder in/usr/var/postgres/
und löschen Sie dann diepostmaster.pid
Datei in diesen Ordner.quelle
setzen
host: localhost
indatabase.yml
Datei und starten Sie diesen Befehl ein :quelle
Mac-Benutzer mit der Postgres-App möchten möglicherweise die Anwendung öffnen (Postgres im Rampenlicht suchen oder das Elefantensymbol in Ihrer Menüleiste finden). Darin sehen Sie möglicherweise ein rotes X mit der Meldung: "Stale postmaster.pid file". Leider wird bei einer Spotlight-Suche der Speicherort dieser Datei nicht angezeigt. Klicken Sie auf "Servereinstellungen ..." und klicken Sie im daraufhin angezeigten Dialogfeld auf die Schaltfläche "Anzeigen", um das Datenverzeichnis zu öffnen. Navigieren Sie in einem Ordner (für mich war es "var-10") und löschen Sie die
postmaster.pid
Datei.Kehren Sie zur Postgres-App zurück und klicken Sie auf die Schaltfläche Start. Dieses rote X sollte sich in ein grünes Häkchen mit der Meldung "Running" verwandeln. Jetzt sollten Sie Rails-Befehle wie
rails server
im Terminal erfolgreich ausführen können .quelle
Ich hatte heute Abend gerade dieses Problem, als ich an einer Schienenanwendung arbeitete, an der ich schon eine Weile gearbeitet habe. Mein Problem war einfach darauf zurückzuführen, dass mein Postgresql-Server nicht lief .
Ich ging zum oberen Bildschirmrand (ich bin auf einem Mac) und klickte auf das kleine Elefantensymbol und dann auf "Start".
Schaltet unseren Server nicht ein.
Hoffentlich bietet dies eine einfache Lösung für jemanden.
quelle
Es war definitiv die Antwort von @Chris Slade, die mir geholfen hat.
Ich habe ein kleines Skript geschrieben, um diese verbleibenden Prozesse zu beenden, wenn dies nützlich ist:
quelle
Ich hatte das gleiche Problem in der Produktion (Entwicklung hat alles funktioniert). In meinem Fall befindet sich der DB-Server nicht auf demselben Computer wie die App. Schließlich funktionierte die Migration nur durch Schreiben:
und dann den Server neu starten und alles hat funktioniert.
quelle
Ich weiß, dass dies spät ist, aber vielleicht jemandem helfen könnte. Ich hatte das gleiche Problem. Es stellt sich heraus, dass ich zwei Versionen von Postgres 9.1 und 9.5 hätte. Ich habe 9.1 und 9.5 deinstalliert und 9.5 erneut installiert und es hat bei mir funktioniert.
quelle
Sie haben Ihren Computer wahrscheinlich neu gestartet und vergessen, die Postgres-App zu starten.
quelle
Ich hatte das gleiche Problem. Ich checke die letzte Zeile der
PostgreSQL
Protokolldateien ein/var/log/postgresql
. In der Datei /etc/postgresql/9.5/main/postgresql.conf gab es einen nicht erkannten Konfigurationsparameter . Das Kommentieren der Fehlerzeile in hatpostgresql.conf
mein Problem behoben.quelle
Mein Problem war in meiner application.yml- Datei. Meine Datenbank
url
aufheroku
nicht - Port 5342. Überprüfen Sie Ihreheroku
Konfigurationvar DATABASE_URL
. Stellen Sie sicher, dass in Ihrer application.yml genau die Übereinstimmung mit der entsprechenden Datenbank vorhanden ist.quelle
Ich hatte das gleiche Problem, diese Erklärung löste es für mich: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/
Der wichtigste Schritt war das Betrachten des Endes meines /usr/local/var/postgres/server.log , anhand dessen ich das eigentliche Problem erkennen konnte, nämlich , dass ich den Upgrade-Prozess für PostgreSQL noch nicht vollständig abgeschlossen hatte
quelle
server.log
. Ich habe meine Antwort hier gefunden: stackoverflow.com/questions/25970132/…Ich habe gerade diesen Befehl ausgeführt
sudo service postgresql restart
und alles hat wieder funktioniert.quelle
Ich habe den Rails-Server gestoppt, bin gelaufen
rake db:migrate
und habe meinen gestartetrails s
.quelle
Ich bin auf diesen Fehler
brew upgrade
gestoßen, nachdem ich einem gefolgt bin, in dem postgresql aktualisiert wurde. In diesem großartigen Beitrag habe ich genau herausgefunden, wie ich mein Problem beheben kann. Ich konnte Postgres wieder zum Laufen bringen und sogar über alle meine vorhandenen Datenbanken migrieren. https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgradequelle
Ich hatte gerade dieses Problem und keine der vorgeschlagenen Lösungen funktionierte für mich. Nach vielem googeln habe ich eine Lösung gefunden. Das hat bei mir funktioniert.
Zuerst musste ich diesen Befehl ausführen, um den Server zu starten, und ich vermute, den Speicherort der Konfigurationsdatei festgelegt zu haben.
Dann habe ich diesen Befehl ausgeführt, um auf Postgres zuzugreifen
Und an der Postgres-Eingabeaufforderung habe ich "\ du" eingegeben, um die Rollen aufzulisten
Die Postgres-Rolle fehlte, daher musste ich sie mit diesem Befehl erstellen
Das hat mein Problem gelöst und ich hoffe, das hilft jemand anderem.
quelle
Sie müssen die
postmaster.pid
Datei nicht löschen , da dies möglicherweise zu einer Beschädigung der Daten führt.Möglichkeit? Einfach
kill
der Prozess (nicht verwendenkill -9
, nur ein gewöhnlicher Kill reicht aus).Dann starten Sie einfach den Postgres-Server neu und los geht's!
Hier sind die Schritte, um dies zu erreichen:
Suchen und öffnen Sie die
postmaster.pid
Datei (meine ist auf Mac Sierra)vi ~/Library/Application\ Support/Postgres/var-10/postmaster.pid
Kopieren Sie die PID - dies ist die Nummer in der ersten Zeile der
postmaster.pid
Dateikill PID
, z. B. wenn meine PID 381 ist, werde ich tunkill 381
brew services start postgresql
. Oder wenn Sie postgresapp verwenden, klicken Sie einfach auf diestart
Schaltflächequelle
Der Homebrew-Paketmanager enthält Launchctl-Listen, die automatisch gestartet werden. Weitere Informationen finden Sie unter
brew info postgres
.Manuell starten:
pg_ctl -D /usr/local/var/postgres start
Manuell anhalten:
pg_ctl -D /usr/local/var/postgres stop
Automatisch starten:
"Damit startd postgresql jetzt startet und beim Login neu startet:"
brew services start postgresql
quelle