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 ausprobiere .
PGError (Verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder kein solches Verzeichnis. Läuft der Server lokal und akzeptiert Verbindungen auf dem Unix-Domain-Socket "/tmp/.s.PGSQL.5432"?
Ich habe PostgreSQL vor langer Zeit mit Homebrew installiert und nach einem versuchten Installationsversuch von MongoDB war meine PostgreSQL-Installation 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 eingerichtet werden sollte?
Bisher (glaube ich) sagt mir das, dass PostgreSQL nicht läuft (?).
ps -aef|grep postgres (ruby-1.9.2-p320@jct-ana) (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 seitdem gelesen, dass dies geschieht, weil OS X eine eigene Version von PostgreSQL installiert und Homebrew eine andere Version an einem anderen Ort installiert und die PostgreSQL-Befehle im Verzeichnis / tmp / suchen. Sie müssen mehr nach Stack Overflow suchen, aber im Grunde genommen verknüpfen Sie PostgreSQL, damit alles, was 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 oben beschriebenen Symlink. 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 der Konzepte für die Installation von PostgreSQL unter OS X zusammenstellen und erklären, 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
Der Schlüssel zu berücksichtigen ist:
Stellen Sie sicher, dass der Pfadeintrag für die Kopie von PostgreSQL, die Sie ausführen möchten, VOR dem Pfad zu PostgreSQL des OS X-Systems KOMMT.
Dies ist eine Kernanforderung, die entscheidet, welches PostgreSQL ausgeführt wird, und was mir gesagt wurde, führt zu den meisten dieser Probleme.
quelle
Antworten:
Überprüfen Sie, ob sich wahrscheinlich keine postmaster.pid in Ihrem postgres-Verzeichnis befindet
/usr/local/var/postgres/
Entfernen Sie diese und starten Sie den Server.
Check - https://github.com/mperham/lunchy ist ein großartiger Wrapper für launchctl.
quelle
" Postgres.app " ist eine bessere Lösung, wenn Sie unter OS X arbeiten
Hier ist das Update:
cd /var
rm -r pgsql_socket
ln -s /tmp pgsql_socket
chown _postgres:_postgres pgsql_socket
Weitere Informationen finden Sie unter " postgresql 9.0.3. On Lion Dev Preview 1 ".
quelle
/tmp
um _postgres zu chown , aber hey :)Bei mir funktioniert das
quelle
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
brew services restart postgresql
No such file or directory
in meinem FallDies hat bei mir für den von Ihnen erwähnten Fehler funktioniert. Machen Sie eines davon:
Ändern Sie möglicherweise Ihren in der
postgres.conf
Datei angegebenen Standardport , wenn Sie5432
während der Installation einen anderen als den Standardport verwendet haben .Ändern Sie die Portnummer in
postgresql.conf
und starten Sie den DB-Server neu.Anstatt
psql
den vollständigen Befehl einzugeben:quelle
Wenn Sie Homebrew ausführen, deinstallieren Sie Postgresql end pg gems: *
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
Dann installieren Sie Postgres erneut und pg gem: *
So starten Sie postgresql beim Anmelden:
Oder manuell starten.
Installieren Sie pg gem
Ich hoffe ich habe geholfen
quelle
brew info postgres
:ARCHFLAGS="-arch x86_64" gem install pg
initdb /usr/local/var/postgres -E utf8
funktioniert. Vielen Dank.Ich hatte dieses Problem, als ich Postgres auf 9.3.x aktualisiert habe. Die schnelle Lösung für mich bestand darin, ein Downgrade auf die Version 9.2.x durchzuführen, die ich zuvor hatte (es ist nicht erforderlich, eine neue zu installieren).
" Homebrew-spezifische Version der Formel installieren? " Bietet eine viel umfassendere Erklärung sowie alternative Möglichkeiten zur Behebung des Problems.
quelle
Ich habe dies durch ein Upgrade von Postgres behoben.
Dann musste ich auch die Datenbanken aktualisieren, um mit der neuen Hauptversion kompatibel zu sein, da ich von 10 auf 11 aktualisiert habe.
(Quelle https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )
quelle
Bei vielen Problemen hier scheint es, dass die Leute bereits psql ausgeführt haben und entfernen mussten
postmaster.pid
. Ich hatte dieses Problem jedoch nicht, da ich Postgres noch nie richtig in meinem System installiert hatte.Hier ist eine Lösung, die für mich in MAC OSX Yosemite funktioniert hat
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
Hoffe das hilft! Toodles!
Diese Antwort hat mir auch am meisten geholfen: https://stackoverflow.com/a/21503349/3173748
quelle
Wenn Sie Folgendes ausführen: psql -p 5432 -h localhost verwendet nicht den Loopback-Treiber, sondern einen echten Socket. Daher müssen Sie postgres so konfigurieren, dass Socket-Verbindungen akzeptiert werden. Obwohl pgadmin und andere Clients möglicherweise funktionieren, wird psql dies nicht tun.
Sie müssen sowohl die Datei postgresql.conf als auch die Datei pg_hba.conf ändern, um die Verbindung über einen echten Socket zu ermöglichen. Dies ermöglicht auch die Verbindung von einer Remote-IP, weshalb diese standardmäßig deaktiviert ist.
Diese Dateien befinden sich im Datenverzeichnis, aber der tatsächliche Speicherort kann je nach Installation von postgres unterschiedlich sein. Führen Sie bei laufendem Postgres den folgenden Befehl aus:
Diese beiden Dateien sind das Verzeichnis -D (möglicherweise / usr / local / pgsql / data).
Kommentieren Sie für die Datei postgresql.conf die listen_address aus und ändern Sie sie in:
Fügen Sie für die pg_hba.conf die folgende Zeile hinzu:
quelle
Ich kenne Mac oder Homebrew nicht wirklich, aber ich kenne PostgreSQL sehr gut.
Sie möchten herausfinden, wo sich die Protokolle von PostgreSQL befinden und wie das Socket-Verzeichnis für PostgreSQL ist. Wenn Sie PG erstellen, lautet das Socket-Verzeichnis standardmäßig / tmp /. Wenn Sie dies beim Erstellen von PG und beim Starten von PG nicht geändert haben, sollte eine Socket-Datei in / tmp angezeigt werden, wenn Sie Folgendes tun: ls -al / tmp
Die Socket-Datei beginnt mit einem ".", Daher wird sie nicht mit dem '-a' bis ls angezeigt.
Wenn Sie dort keinen Socket sehen und nichts von ps awux | sehen grep postgres, dann läuft PG wahrscheinlich nicht, oder vielleicht ist es das und es ist das von OSX installierte. Was möglicherweise passiert, ist, dass beim Abhören von Port 5432 auf localhost möglicherweise ein Konflikt auftritt. Verwenden Sie netstat -anp, um zu sehen, was, wenn überhaupt, 5432 abhört. Wenn ein Mac OSX PG diesen Port bereits abhört, kann dies der Fall sein das Problem sein.
Hoffentlich hilft das. Ich habe gehört, dass Homebrew die Dinge ein bisschen hässlich machen kann und viele Leute, mit denen ich gesprochen habe, ermutigen, stattdessen eine VM zu verwenden.
quelle
Ich habe diesen Fehler festgestellt, als ich unter Mac 10.15.5 mit Homebrew ausgeführt wurde.
Es gibt eine Datei namens postmaster.pid, die beim Beenden von postresql automatisch gelöscht werden soll.
Wenn dies nicht der Fall ist, gehen Sie wie folgt vor
quelle
Die Ursache
Lion wird mit einer bereits installierten Version von Postgres geliefert und verwendet diese Binärdateien standardmäßig. Im Allgemeinen können Sie dies umgehen, indem Sie den vollständigen Pfad zu den Homebrew-Postgres-Binärdateien verwenden. Möglicherweise treten jedoch weiterhin Probleme mit anderen Programmen auf.
Die Lösung
Über
http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/
quelle
Ein Grund für diesen Fehler ist, dass Ihre lokale Postgres-Datenbank beim Neustart Ihres Computers heruntergefahren wird. Geben Sie in einem neuen Terminalfenster einfach Folgendes ein:
um den Server neu zu starten.
quelle
Hallo Welt :)
Der beste, aber seltsame Weg für mich war, die nächsten Dinge zu tun.
1) Laden Sie postgres93.app oder eine andere Version herunter . Fügen Sie diese App in den Ordner / Applications / ein.
2) Fügen Sie der Datei eine Zeile (Befehl) hinzu
Es ist ein Weg.bash_profile
(die sich in meinem ) hinzu:psql
vonPostgres93.app
. Die Zeile (Befehl) wird bei jedem Start der Konsole ausgeführt.3) Starten Sie
Postgres93.app
vom/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) Auch wenn Sie Ihre Datenbanken grafisch anzeigen möchten, sollten Sie installieren
PG Commander.app
. Es ist eine gute Möglichkeit, Ihre Postgres-Datenbank als hübsche Datentabellen zu betrachtenNatü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.
quelle
Ich hatte PostgreSQL 9.3 und bekam den gleichen Fehler,
Ich habe das behoben mit:
Für mich geht das.
quelle
Für das, was es wert ist, habe ich den gleichen Fehler festgestellt, als ich einen Tippfehler (
md4
anstelle vonmd5
) in meinerpg_hba.conf
Datei hatte (/etc/postgresql/9.5/main/pg_hba.conf
)Wenn Sie wie ich hierher gekommen sind, überprüfen Sie diese Datei einmal, um sicherzustellen, dass dort nichts Lächerliches ist.
quelle
pg_hba.conf
Datei?Beim lokalen Ausführen von PostgreSQL können verschiedene 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 Ihr Rails-Projekt auf dem neuesten Stand haben
db/schema.rb
So installiere ich PostgreSQL normalerweise auf einem Mac . Wenn Sie Ihre Datenbank lokal unter dem Root-Benutzer ausführen, möchten Sie möglicherweise den letzten Schritt weglassen, mit dem ein
todo
Benutzer erstellt wirdquelle
Einer der Gründe könnte das sein
unix_socket_directories in der Datei postgresql.conf wird nicht mit dem gesuchten Verzeichnis aufgelistet.
Im Fragenbeispiel wird nach Verzeichnis / tmp gesucht, das in der Datei postgresql.conf angegeben werden muss
etwas wie das:
Diese Lösung hat bei mir funktioniert.
quelle
Wenn Sie unter MacOS arbeiten und Homebrew verwenden, fand ich diese Antwort äußerst hilfreich:
https://stackoverflow.com/a/27708774/4062901
Für mich lief mein Server, aber aufgrund eines Upgrades hatte ich Probleme beim Verbinden (Hinweis: Ich verwende Brühdienste). Wenn Postgres ausgeführt wird, versuchen Sie zu
cat /usr/local/var/postgres/server.log
sehen, was in den Protokollen steht. Mein Fehler war eine Migration, kein Verbindungsproblem.Auch nach der von ihnen vorgeschlagenen manuellen Migration (die aber funktioniert) stellte ich fest, dass für meinen Benutzer keine Tabelle mehr vorhanden war. Versuchen Sie diesen Befehl, um Folgendes zu beheben:
createdb
(Beantwortet über psql: FATAL: Datenbank "<Benutzer>" existiert nicht )quelle
Starten Sie Postgres einfach neu, sobald ein Fehler auftritt,
brew services restart postgresql
und versuchen Sie es erneutquelle
Für mich hat der Befehl
rm /usr/local/var/postgres/postmaster.pid
nicht funktioniert, weil ich eine bestimmte Version von postgresql mit Homebrew installiert habe.Der richtige Befehl ist
rm /usr/local/var/postgres@10/postmaster.pid
.dann
brew services restart postgresql@10
.quelle
Es ist sehr einfach. Fügen Sie nur den Host in Ihrer Datei database.yaml hinzu.
quelle