it-swarm.com.de

PostgreSQL-Fehler 'Konnte keine Verbindung zum Server herstellen: Keine solche Datei oder Verzeichnis'

Wie bei einigen anderen wird dieser Fehler angezeigt, wenn ich rake db: migrate in meinem Projekt ausführe oder sogar die meisten Datenbankaufgaben für meine Ruby on Rails 3.2-Anwendungen versuche.

PGError (Verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder kein solches Verzeichnis. Wird der Server lokal ausgeführt und akzeptiert Verbindungen auf dem Unix-Domain-Socket "/tmp/.s.PGSQL.5432"?

Ich habe vor langer Zeit PostgreSQL mit Homebrew installiert und nach einem Installationsversuch von MongoDB war meine PostgreSQL-Installation in letzter Zeit noch nie dieselbe. Ich verwende OS X 10.6 Snow Leopard.

Was ist falsch und wie kann ich besser verstehen, wie PostgreSQL auf meinem Mac eingerichtet ist und werden sollte?

Bisher (glaube ich) sagt mir dies, dass PostgreSQL nicht läuft (?).

ps -aef|grep postgres                                                                                                   ([email protected]) (develop) ✗
  501 17604 11329   0   0:00.00 ttys001    0:00.00 grep postgres

Aber sagt mir das, dass PostgreSQL läuft?

✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist                                                        (Ruby-1.9.2-p136) 
homebrew.mxcl.postgresql: Already loaded

Wie behebe ich das? was sehe ich nicht

PS: ~/Library/LaunchAgents enthält zwei PostgreSQL-PLIST-Dateien. Ich bin mir nicht sicher, ob das relevant ist.

org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist

Ich habe Folgendes versucht und ein Ergebnis wie unten erhalten.

$ psql -p 5432 -h localhost

psql: 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" (::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?

Ich habe gelesen, dass dies geschieht, weil OS X eine eigene Version von PostgreSQL installiert und Homebrew eine andere Version an einer anderen Stelle installiert und die PostgreSQL-Befehle im Verzeichnis/tmp/suchen. Sie müssen mehr über Stack Overflow suchen, aber im Grunde genommen verknüpfen Sie PostgreSQL so, dass jeder, der in diesem tmp-Pfad sucht, tatsächlich den tatsächlichen Pfad findet, wenn dies sinnvoll ist.

Dies ist der Link, über den ich ein paar weitere Dinge zum Ausprobieren gefunden habe, insbesondere den Symlink wie oben beschrieben. Mac OSX Lion Postgres akzeptiert keine Verbindungen unter /tmp/.s.PGSQL.5432 . Ich wünschte immer noch, jemand würde eine anständige Erklärung für die Konzepte hinter der Installation von PostgreSQL unter OS X finden und warum das alles so schwierig ist.

Neueste Erkenntnisse zur Fehlerbehebung:

$ which psql // This tells you which PostgreSQL you are using when you run $ psql. 

Dann renne:

$ echo $PATH

Das Wichtigste, das berücksichtigt werden muss, ist Folgendes:

Stellen Sie sicher, dass der Pfadeintrag für die PostgreSQL-Kopie, die Sie ausführen möchten, VOR dem Pfad zu PostgreSQL auf dem OS X-System angezeigt wird.

Dies ist eine Grundvoraussetzung, die entscheidet, welches PostgreSQL ausgeführt wird und zu den meisten dieser Probleme führt.

129
Evolve

Überprüfen Sie, ob sich in Ihrem postgres-Verzeichnis keine postmaster.pid befindet, wahrscheinlich /usr/local/var/postgres/ 

entfernen Sie diesen und starten Sie den Server.

Check - https://github.com/mperham/lunchy ist ein großartiger Wrapper für launchctl.

97
Hass

UPDATE: HIER IS EIN BESSERER FIX, WENN SIE AUF OSX ...

http://postgresapp.com/


Alte Antwort:

Hier ist der Fix, mehr Infos hier:

https://github.com/mxcl/homebrew/issues/5004

Stoppen Sie zuerst die DB, dann

  1. cd/var
  2. rm -r pgsql_socket
  3. ln -s/tmp pgsql_socket
  4. chown _postgres: _postgres pgsql_socket
  5. starten Sie Postgres neu (nicht Ihren Computer)
56
josephmisiti

Für mich funktioniert das

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

Für den obigen Fehler, den Sie erwähnt haben, klappt das für mich.

1) Ändern Sie möglicherweise Ihren Standardport, der in der Datei postgres.conf nicht angegeben ist... Wenn Sie einen anderen als den Standardport Nr. 5432 während der Installation angegeben haben. 

(ODER)

2) Ändern Sie die Anschlussnummer in der Datei postgresql.conf und starten Sie den DB-Server erneut 

(ODER)

3) Statt psql geben Sie den vollständigen Befehl ein 

"psql -p 5432 -h localhost" 

  • servername und Port-Nr 
14
solaimuruganv

Wenn Sie Homebrew ausführen, deinstallieren Sie Postgresql end pg gems: *

$ gem uninstall pg
$ brew uninstall postgresql

Laden Sie das folgende Skript herunter und führen Sie es aus, um die Berechtigung für/usr/local zu korrigieren: *https://Gist.github.com/rpavlik/768518

$ Ruby fix_homebrew.rb

Dann installiere Postgres erneut und pg gem: *

$ brew install postgresql  
$ initdb /usr/local/var/postgres -E utf8

Damit startd postgresql beim Anmeldelauf starten kann: 

$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents 

Oder manuell starten.

Install pg gem 

$ gem install pg

Ich hoffe geholfen zu haben

10
Fabricio

Ich hatte dieses Problem, als ich Postgres auf 9.3.x aufgerüstet habe. Die schnelle Lösung für mich war das Downgrade auf die Version 9.2.x, die ich zuvor hatte (keine Notwendigkeit, eine neue zu installieren).

$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql

Diese Antwort bietet eine viel umfassendere Erklärung sowie alternative Möglichkeiten zur Behebung des Problems. 

8
silvenon

Bei vielen Problemen scheint es, dass die Leute bereits psql ausgeführt haben und postmaster.pid entfernen mussten. Ich hatte dieses Problem jedoch nicht, da ich noch nie Postgres in meinem System installiert hatte.

Hier ist eine Lösung, die in MAC OSX Yosemite für mich funktioniert hat 

  1. Ich ging zu http://postgresapp.com/ und lud die App herunter.
  2. Ich habe die App in das Anwendungsverzeichnis verschoben
  3. Ich habe es zu $ ​​PATH hinzugefügt, indem ich dies zu .bashrc oder .bash_profile oder .zshrc hinzugefügt habe: export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
  4. Ich habe die Postgres im Applications-Verzeichnis ausgeführt und den Befehl erneut ausgeführt, und es hat funktioniert.

Hoffe das hilft! Toodles!

Diese Antwort hat mir auch am meisten geholfen: https://stackoverflow.com/a/21503349/3173748

5
superjisan

Wenn Sie Folgendes ausführen: Psql -p 5432 -h localhostit verwendet keinen Loopback-Treiber, sondern einen echten Socket. Daher müssen Sie Postgres konfigurieren, um Socketverbindungen zu akzeptieren. Obwohl pgadmin und andere Clients möglicherweise funktionieren, funktioniert psql nicht.

Sie müssen sowohl die postgresql.conf-Datei als auch die pg_hba.conf-Datei ändern, um die Verbindung über einen echten Socket zu ermöglichen. Dies ermöglicht auch die Verbindung von einer Remote-IP, weshalb sie standardmäßig deaktiviert ist.

Diese Dateien befinden sich im Datenverzeichnis, der tatsächliche Speicherort kann jedoch davon abhängig sein, wie Postgres installiert wurde. Führen Sie bei laufenden Postgres den Befehl aus:

ps -ef | grep postmaster

Diese beiden Dateien sind das Verzeichnis -D (möglicherweise/usr/local/pgsql/data).

Entfernen Sie in der postgresql.conf-Datei die Kommentarzeichen für listen_address und ändern Sie sie in:

listen_address = '*'

Für die pg_hba.conf fügen Sie die Zeile hinzu:

Host all all 0.0.0.0/0 md5
4
oenpelli

Ich kenne Mac und Homebrew nicht wirklich, aber ich kenne PostgreSQL sehr gut.

Sie möchten herausfinden, wo die Protokolle von PostgreSQL stammen und versuchen, das Socket-Verzeichnis für PostgreSQL zu starten. Beim Erstellen von PG ist das Socket-Verzeichnis standardmäßig/tmp /. Wenn Sie das beim Erstellen von PG nicht geändert haben und dann PG gestartet haben, sollten Sie in/tmp eine Socket-Datei sehen können, wenn Sie Folgendes tun: ls -al/tmp

Die Socket-Datei beginnt mit einem ".", Sodass Sie sie nicht mit '-a' bis ls sehen können.

Wenn Sie dort keinen Sockel sehen und nichts von ps awux sehen grep postgres, dann läuft PG wahrscheinlich nicht, oder vielleicht ist es das und es ist das OSX-installierte. Es kann vorkommen, dass Sie beim Anhören von Port 5432 auf localhost einen Konflikt erhalten. Verwenden Sie netstat -anp, um zu sehen, was auf 5432 zu hören ist sei das Problem.

Hoffentlich hilft das. Ich habe gehört, dass Homebrew die Dinge etwas hässlich machen kann, und viele Leute, mit denen ich gesprochen habe, sollten stattdessen ein VM verwenden.

2
Stephen Frost

Hallo Welt :)
Der beste, aber seltsamste Weg für mich war, die nächsten Dinge zu tun.

1) postgres93.app oder andere Version herunterladen. Fügen Sie diese App in den Ordner/Applications/ein.

2) Fügen Sie der Datei .bash_profile (die sich in meinem Heimatverzeichnis befindet) eine Zeile (Befehl) hinzu:

export PATH =/Applications/Postgres93.app/Contents/MacOS/bin /: $ PATH
Es ist ein PFAD für psql von Postgres93.app. Die Zeile (Befehl) wird bei jedem Start der Konsole ausgeführt.

3) Starten Sie Postgres93.app aus dem /Applications/-Ordner. Es startet einen lokalen Server (Port ist "5432" und Host ist "localhost").

4) Nach all diesen Manipulationen war ich froh, $ createuser -SRDP user_name und andere Befehle auszuführen und zu sehen, dass es funktionierte! Postgres93.app kann bei jedem Systemstart ausgeführt werden.

5) Wenn Sie Ihre Datenbanken grafisch anzeigen möchten, sollten Sie PG Commander.app installieren. Es ist eine gute Möglichkeit, Ihre Postgres-Datenbank als hübsche Datentabellen zu sehen

Natürlich ist es nur für lokale Server hilfreich. Ich würde mich freuen, wenn diese Anleitung anderen hilft, die mit diesem Problem konfrontiert sind.

1
crazzyaka

Die Ursache

Lion wird mit einer bereits installierten Version von Postgres ausgeliefert und verwendet diese Binärdateien standardmäßig. In der Regel können Sie dies umgehen, indem Sie den vollständigen Pfad zu den PostScript-Binaries von Homebrew verwenden. In anderen Programmen können jedoch weiterhin Probleme auftreten.

Die Lösung

curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | Sch

Über 

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/

1
SocoM

Ich hatte PostgreSQL 9.3 und bekam den gleichen Fehler.

Verbindung zum Server konnte nicht hergestellt werden: Verbindung abgelehnt Läuft der Server auf Host "localhost" (127.0.0.1) und Akzeptieren von TCP/IP-Verbindungen auf Port 5432?

Ich habe das behoben mit:

chmod 777  /var/lib/pgsql/9.3/data/pg_hba.conf 
service postgresql-9.3 restart

Für mich geht das.

1
Mahesh Shitole

ich habe den gleichen Fehler festgestellt, als ich einen Tippfehler (md4 statt md5) in meiner pg_hba.conf-Datei (/etc/postgresql/9.5/main/pg_hba.conf) hatte

Wenn Sie wie ich hierher gekommen sind, überprüfen Sie diese Datei noch einmal, um sicherzustellen, dass dort nichts lächerliches drin ist.

1
Zach Lamberty

Ich habe dies durch ein Upgrade von Postgres behoben.

brew update
brew upgrade

Dann musste ich auch die Datenbanken aufrüsten, um mit der neuen Hauptversion kompatibel zu sein, da ich von 10 auf 11 aufgerüstet habe.

brew postgresql-upgrade-database

(source https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )

1
Nelu

Diese Fehlermeldung wird unter anderem deshalb angezeigt, weil die lokale Postgres-Datenbank beim Neustart des Computers heruntergefahren wird. Geben Sie in einem neuen Terminalfenster einfach Folgendes ein: 

$psql -h localhost 

um den Server neu zu starten.

0
Pstrazzulla

Wenn Sie mit MacOS arbeiten und Homebrew verwenden, fand ich diese Antwort äußerst hilfreich: 

https://stackoverflow.com/a/27708774/4062901

Mein Server lief für mich, aber aufgrund eines Upgrades hatte ich Probleme beim Verbindungsaufbau (Hinweis: Ich verwende Braudienste). Wenn Postgres ausgeführt wird, versuchen Sie cat /usr/local/var/postgres/server.log und sehen Sie, was in den Protokollen steht. Mein Fehler war eine Migration, kein Verbindungsproblem.

Auch nach der manuellen Migration, die sie vorschlagen (was funktioniert, aber), habe ich festgestellt, dass es für meinen Benutzer keine Tabelle mehr gibt. Führen Sie diesen Befehl aus, um das Problem zu beheben: createdb (beantwortet über psql: FATAL: Datenbank "<user>" ist nicht vorhanden )

0
rickrizzo

Einer der Gründe könnte das sein 

die unix_socket_directories in der postgresql.conf-Datei wird nicht mit dem Verzeichnis aufgelistet, nach dem sie sucht.

In dem Fragenbeispiel wird nach dem Verzeichnis/tmp gesucht, das in der Datei postgresql.conf angegeben werden muss

etwas wie das: 

unix_socket_directories = '/var/run/postgresql,/tmp'    # comma-separated list of directories

Diese Lösung hat für mich funktioniert.

0
Kiran Telukunta

Beim lokalen Ausführen von PostgreSQL können unterschiedliche Probleme auftreten. Ich würde empfehlen, alle installierten Postgres-Versionen zu reinigen und neu zu starten. Sobald Sie es installiert haben, ist es sehr einfach, Ihre Datenbank neu zu erstellen, wenn Sie ein Rails-Projekt mit dem aktuellen Code db/schema.rb haben.

Hier ist, wie ich normalerweise installiere PostgreSQL auf einem Mac . Wenn Sie Ihre Datenbank lokal unter dem Root-Benutzer ausführen, möchten Sie möglicherweise den letzten Schritt auslassen, der einen todo-Benutzer erstellt

0

Starten Sie Postgres einfach neu, sobald ein Fehler auftritt, indem Sie brew services restart postgresql ausführen und es dann erneut versuchen

0
Kanke