it-swarm.com.de

PG :: ConnectionBad - Verbindung zum Server konnte nicht hergestellt werden: Verbindung abgelehnt

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 den 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

Kann mir jemand helfen?

228
fadelakin

Es könnte so einfach sein wie eine veraltete PID-Datei . Es könnte im Hintergrund fehlschlagen, da Ihr Computer den Herunterfahrenvorgang nicht vollständig abgeschlossen hat. Dies bedeutet, dass postgres die DateiPID(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 startet, schlägt es fehl, weil bereits einePID- Datei vorhanden ist, die postgres mitteilt, dass eine andere Instanz des Servers gestartet wurde (obwohl er nicht läuft, ist es einfach nicht gegangen kann nicht heruntergefahren und die PID gelöscht werden).

  1. Um dies zu beheben, entfernen/benennen Sie die PID-Datei um. Finden Sie das Postgres-Datenverzeichnis. Auf einem MAC mit Homebrew ist dies /usr/local/var/postgres/, bei anderen Systemen kann es /usr/var/postgres/ sein.
  2. Überprüfen Sie die Protokolldatei (server.log), um sicherzustellen, dass dies das Problem ist. In den letzten Zeilen sehen Sie: 

FATAL: Die Sperrdatei "postmaster.pid" existiert bereits
TIPP: Läuft ein anderer Postmaster (PID 347) im Datenverzeichnis "/ usr/local/var/postgres"?

  1. Wenn ja, rm postmaster.pid
  2. Starten Sie Ihren Server neu. Auf einem Mac mit launchctl (mit Homebrew) starten die folgenden Befehle den Server neu.

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

    ODER bei neueren Versionen von Brew  

    brew services restart postgresql
    
551
Chris Slade

Nach langem Suchen und Analysieren habe ich eine Lösung gefunden, wenn Sie ubuntu verwenden, schreiben Sie einfach diesen Befehl in Ihr Terminal und drücken Sie die Eingabetaste

Sudo service postgresql restart

Dadurch wird Ihr PostgreSQL-System neu gestartet. Ich hoffe, das würde für Sie funktionieren.

39

Ich habe es geschafft, das Problem zu lösen, indem ich der Antwort von Chris Slade folgte, aber um den Server neu zu starten, musste ich die folgenden Befehle verwenden:

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

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

dass ich hier gefunden habe (pjammers Antwort unten)

32
Andrea Gherardi

Haben Sie Postgresql in Ihrem System installiert? Wenn nicht, dann sehen Sie postgresql installieren. Nachdem Sie postgresql erfolgreich in Ihr System integriert haben, können Sie so etwas in Ihr Systemendgerät eingeben:

which psql
#=> /usr/bin/psql

Danach müssen Sie einen Benutzer und eine Datenbank in postgresql wie folgt erstellen:

Sudo su - postgres
psql

Dann können Sie in Ihrem Terminal Folgendes sehen

postgres=#

Dort eingeben:

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

Nachdem Sie dies getan haben, müssen Sie Ihren database.yml korrigieren. Wahrscheinlich brauchst du so etwas:

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

Wenn Sie Probleme mit postgresql haben, sollten Sie die Datei pg_hba.conf überprüfen.

22

Um diese Art von Problemen mit Postgres zu beheben und mit Postgres unter Mac OSX zu arbeiten, ist dies wahrscheinlich der BEST und der AM EINFACHSTEN Lösung, die ich bisher gefunden habe:

http://postgresapp.com/

Einfach herunterladen, installieren und glücklich sein :)

22

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 können /usr/var/postgres/ betrachten.

Schritt 2: Entfernen Sie die .pid-Datei, indem Sie diesen Befehl ausführen.

rm postmaster.pid

Schritt 3: Starten Sie Ihren Server neu

Mac-Benutzer

brew services restart postgresql

Linux Benutzer

Sudo service postgresql restart

Starten Sie schließlich Ihre App neu und Sie können loslegen.

21
techdreams
  1. Deinstallation pg:

    gem uninstall pg
  2. Deinstallieren Sie postgres:

    brew uninstall postgres
  3. Nuke der Postgres-Ordner, in dem sich ein paar veraltete Sachen befinden:

    rm -rf /usr/local/var/postgres
  4. Neustart (vielleicht unnötig)

  5. Pg neu installieren:

    brew install postgres
  6. Mein Kommentar in der Antwort von Chris Slade beginnt auf die harte Tour. Jetzt nutze ich Braudienste, die mein Leben in vielerlei Hinsicht vereinfacht haben:

    brew install services
  7. Und fange pg damit an:

    brew services start postgresql
  8. Installieren Sie den Edelstein erneut:

    gem install pg

Und bobsyouroncle.

16
IAmNaN

Überprüfen Sie die Datei postgresql.conf (auf ubuntu befindet sich in /etc/postgresql/X.X/main/postgresql.conf) und suchen Sie nach der Zeile, in der Folgendes angezeigt wird:

listen_addresses="localhost"

versuche es zu ändern:

listen_addresses="*"

es würde jede IP akzeptieren, überprüfen Sie als nächstes die Zeile mit der Angabe:

port=5432

und prüfen, ob es sich um den gleichen Port Ihrer database.yml handelt, verwenden Sie in meiner postgresql-9.2 standardmäßig 5433 statt 5432, vergessen Sie nicht Neustart the postgres server, 

Viel Glück!

12
Alexis

Wie von @Magne beschrieben, kann der Fehler PG::ConnectionBad - could not connect to server: Connection refused nach einer major/minor-Version Aktualisierung (z. B. 9.5 -> 9.6 oder 9 -> 10) von PostgreSQL angezeigt werden. 

Ich habe diese Fehlermeldung erhalten, nachdem brew upgrade postgresql nach der Veröffentlichung von PostgreSQL Version 9.6 ausgeführt wurde. Das Problem ist, dass für Haupt-/Nebenversions-Upgrades 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 Version der PostgreSQL-Version für Brühreparaturen mit ...

$ 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

... und dann mit dem aktuellen PG_VERSION vergleichen

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

Wenn PG_VERSION kleiner ist als die neueste Brühformel und der Unterschied eine Haupt-/Nebenversionsänderung ist, ist dies wahrscheinlich Ihr Problem.

Wie zu beheben (d. H. Wie Sie die Daten aktualisieren)

Die folgenden Anweisungen beziehen sich auf 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:

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

Schritt 2. Neue unberührte Datenbank erstellen:

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

Schritt 3. Überprüfen Sie, was die alte und die neue Binärversion sind:

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

Beachten Sie, dass ich in diesem Beispiel von 9.5.4 binär auf 9.6.1 binär bin

Schritt 4. Migrieren Sie die aktuellen Daten mithilfe des Dienstprogramms pg_upgrade in die neue Datenbank. 

$ 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 flag gibt das aktuelle Datenverzeichnis an
  • -D flag gibt das neue Datenverzeichnis an, das erstellt werden soll
  • -b gibt die alte Binärdatei an
  • -B gibt die neue Binärdatei an, auf die wir ein Upgrade durchführen

Schritt 5. Verschieben Sie das alte Datenverzeichnis aus dem Weg 

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

Schritt 6. Verschiebt das neu erstellte Datenverzeichnis dorthin, wo PostgreSQL erwartet

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

Schritt 7. Starten Sie PostgreSQL erneut

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

Schritt 8. Wenn Sie den pg-gem für Rails verwenden, sollten Sie ihn erneut deinstallieren, indem Sie ihn deinstallieren und erneut installieren. (Überspringen Sie diesen Schritt, wenn Sie den pg-gem nicht verwenden.)

$ gem uninstall pg
$ gem install pg

Schritt 9. (optional) Nachdem Sie sich selbst davon überzeugt haben, dass alles in Ordnung ist, können Sie mit dem folgenden Befehl etwas Speicherplatz gewinnen:

brew cleanup postgresql

... und wenn Sie sich wirklich mutig fühlen, können Sie das alte PostgreSQL-Datenverzeichnis mit dem folgenden Befehl löschen

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

(Diese Antwort basiert auf einem ausgezeichneten Blogbeitrag https://keita.blog/2016/01/09/homebrew-and-postgresql-9-5/ mit einigen Ergänzungen)}

11
Neil Atkinson

Wie oben vorgeschlagen, habe ich gerade die Postgres App auf meinem Mac geöffnet, auf Öffnen Psql geklickt, das psql-Fenster geschlossen, meinen Rails-Server in meinem Terminal neu gestartet, und es funktionierte wieder ohne Fehler. 

Vertrauen Sie dem Elefanten: http://postgresapp.com/

7
houstongolden

Das hat mir wirklich geholfen.

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

Referenz: http://alumni.lewagon.org/questions/60

6
Rosana Ruiz

Wenn Sie dieses Problem nach einem brew upgrade, der Postgres auf eine neue Hauptversion aktualisiert hat (z. B. 9.3.0 auf 9.4.0 oder höher), gefunden haben, gehen Sie folgendermaßen vor:

@Dmitrygusevs Fix von https://github.com/Homebrew/homebrew/issues/35240

Der folgende offizielle Migrationsleitfaden [Postgresql] half:

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

Das ist alles. Prüfen Sie, ob der Import gut gelaufen ist, und löschen Sie die Backups:

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

Das Problem hierbei ist, dass bei einem größeren Versionsupgrade von Postgres die Datenbank neu erstellt/migriert werden muss. Und möglicherweise chown Verzeichnisse oder rufen Sie initdb manuell auf.

Siehe auch: Wie kann PostgreSQL von Version 9.5 auf Version 9.6 aktualisiert werden, ohne Daten zu verlieren?


Einige andere Tipps, die nützlich sein könnten, 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

5
Magne

fügen Sie Host: localhost in database.yml-Datei ein und führen Sie diesen Befehl aus

rake db:create db:migrate  
4
Abel

Suchen Sie Ihre Postgres-Datei in /usr/local/var/postgres/ oder /usr/var/postgres/ und löschen Sie dann die postmaster.pid-Datei in diesem Ordner. 

3
Awais Shafqat

Ich hatte das gleiche Problem, nachdem ich meinen Mac auf Osx Movaje aktualisiert hatte.

ich habe diese Lösung gefunden:

Versuchen Sie zuerst die folgende Befehlszeile in Ihrem Terminal: 

brew services restart postgresql

Wenn sich nichts ändert:

ps aux | grep postgres

Wenn sich immer noch nichts ändert:

ls -ls | grep post

Als letzten Befehl wurde die Postgres-Sperrdatei durch Ausführen von root entfernt:

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

und dann :

brew services restart postgresql

Von berziiii: https://github.com/ga-wdi-boston/capstone-project/issues/325

Hoffe das wird helfen :)

Grüße !!

3
Basile

Ich führe einfach diesen Befehl Sudo service postgresql restart Aus und alles hat wieder funktioniert.

2
kalibbala

Ich hatte heute Abend gerade dieses Problem, als ich an einer Rails -Anwendung arbeitete, an der ich schon eine Weile gearbeitet habe. Mein Problem bestand einfach darin, dass mein postgresql-Server lief nicht.

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.

1
solidstatejake

Sie haben Ihren Computer wahrscheinlich neu gestartet und vergessen, die Postgres-App zu starten. 

1
The Whiz of Oz

Ich weiß, dass dies zu spät ist, aber vielleicht jemandem helfen könnte ... Es stellt sich heraus, dass ich zwei Versionen von Postgres 9.1 und 9.5 habe. Ich deinstallierte 9.1 und 9.5 und installierte 9.5 erneut und es funktionierte für mich.

1
Darshan Chauhan

Mac-Benutzer mit der Postgres-App möchten möglicherweise die Anwendung öffnen (Spotlight-Suche nach Postgres oder das Elefanten-Symbol in Ihrer Menüleiste). Darin sehen Sie möglicherweise ein rotes X mit der Meldung: "Alte Postmaster.pid-Datei". Leider wird bei einer Spotlight-Suche der Speicherort dieser Datei nicht angezeigt. Klicken Sie auf "Servereinstellungen ..." und klicken Sie im angezeigten Dialogfeld auf die Schaltfläche "Anzeigen", um das Datenverzeichnis zu öffnen. Navigiere in einem Ordner (für mich war "var-10") und lösche die postmaster.pid-Datei.

Gehen Sie zurück zur Postgres-App und klicken Sie auf die Schaltfläche Start. Dieses rote X sollte sich mit der Meldung "Running" in ein grünes Häkchen verwandeln. Jetzt sollten Sie Rails-Befehle wie Rails server im Terminal erfolgreich ausführen können.

 Postgres App Server Settings - Show Data Directory

1
chemturion

Mein Problem war in meiner Datei application.yml . Meine Datenbank url auf heroku verwendete Port 5342 nicht. Überprüfen Sie Ihre heroku config var DATABASE_URL. Stellen Sie sicher, dass die Übereinstimmungen genau mit in Ihrer application.yml für die zutreffende Datenbank übereinstimmt.

1
NickDK

Ich hatte das gleiche Problem. Ich überprüfe die letzte Zeile der PostgreSQL-Protokolldateien in /var/log/postgresql. In der Datei /etc/postgresql/9.5/main/postgresql.conf befand sich ein unbekannter Konfigurationsparameter. Das Kommentieren der Fehlerzeile in postgresql.conf hat mein Problem behoben.

1
Hajar Homayouni

Es war definitiv die Antwort von @Chris Slade, die mir geholfen hat.

Ich habe ein kleines Skript geschrieben, um die verbleibenden Prozesse zu beenden, falls dies nützlich ist:

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

Ich hatte das gleiche Problem, diese Erklärung hat es für mich gelöst: http://blog.55minutes.com/2013/09/postgresql-93-brew-upgrade/

der Schlüsselschritt bestand darin, das Ende meiner /usr/local/var/postgres/server.log, zu betrachten, um zu sehen, was das eigentliche Problem war der Aktualisierung von PostgreSQL

1
Ben Wheeler

Ich hatte das gleiche Problem in der Produktion (Entwicklung hat alles funktioniert). In meinem Fall ist der DB-Server nicht auf derselben Maschine wie die App.

bundle exec rake db:migrate Rails_ENV=production

und dann den Server neu starten und alles hat funktioniert.

1
leah

Der Homebrew-Paketmanager enthält Startlisten, die automatisch gestartet werden. Für weitere Informationen führen Sie brew info postgres aus.

Manuell starten:

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

Manuell anhalten:

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

Automatisch starten:

"Damit launchd postgresql jetzt startet und bei der Anmeldung neu startet:"

brew services start postgresql

0
user3402754

Sie müssen die postmaster.pid-Datei nicht löschen, da dies zu einer Beschädigung der Daten führen kann.

Möglichkeit? Einfach kill den Prozess (verwenden Sie nicht kill -9, nur ein gewöhnlicher Kill wird es tun).

Dann starten Sie einfach den Postgres-Server und Sie können loslegen!

Hier sind die Schritte, um dies zu erreichen:

  1. Suchen und öffnen Sie die postmaster.pid-Datei (meine ist auf Mac Sierra)

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

  2. Kopieren Sie die PID - es ist die Nummer in der ersten Zeile der postmaster.pid-Datei

  3. Beenden Sie den Vorgang mit kill PID, zB wenn meine PID 381 ist, mache ich kill 381
  4. Postres neu starten - bei Verwendung von brew brew services start postgresql..__ oder bei Verwendung von postgresapp einfach auf die Schaltfläche start klicken
0
Ruto Collins

Ich habe den Rails-Server angehalten, rake db:migrate ausgeführt und meinen Rails s gestartet.

0
thedanotto

Ich musste mein Postgres neu installieren, tolle Anweisungen hier: https://medium.com/@zowoodward/effective-uninstall-and-reinstall-psql-with-homebrew-on-osx-fabbc45c5d9d

Dann musste ich einen postgres-Benutzer anlegen: /usr/local/opt/postgres/bin/createuser -s postgres

Bei diesem Ansatz werden alle Ihre lokalen Daten überlastet. Sichern Sie Ihre Daten daher bei Bedarf.

0

Ich bin auf diesen Fehler gestoßen, nachdem ich einem brew upgrade gefolgt war, in dem postgresql aktualisiert wurde. Ich habe genau gefunden, wie ich mein Problem in diesem großartigen Beitrag beheben kann. Ich konnte Postgres wieder betriebsbereit machen und sogar über alle meine vorhandenen Datenbanken migrieren https://coderwall.com/p/ti4amw/how-to-launch-postgresql-after-upgrade

0
Calaway

Ich hatte gerade dieses Problem und keine der vorgeschlagenen Lösungen funktionierte für mich. Nach vielem googeln fand ich eine Lösung. Das hat bei mir funktioniert.

Zuerst musste ich diesen Befehl ausführen, um den Server zu starten, und ich schätze, den Speicherort der Konfigurationsdatei festzulegen.

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

Dann habe ich diesen Befehl ausgeführt, um auf Postgres zuzugreifen

psql postgres

Und bei der postgres-Eingabeaufforderung gab ich "\ du" ein, um die Rollen aufzulisten

postgres=# \du

Die Postgres-Rolle fehlte, also musste ich sie mit diesem Befehl erstellen

CREATE ROLE POSTGRES WITH SUPERUSER CREATEDB CREATEUSER CREATEROLE REPLICATION BYPASSRLS ;

Das hat mein Problem gelöst und ich hoffe, das hilft jemand anderem.

0
luis.madrigal