Ich habe kürzlich ein Upgrade auf OSX 10.7 durchgeführt. Zu diesem Zeitpunkt war meine Rails-Installation beim Versuch, eine Verbindung zum psql-Server herzustellen, völlig fehlerhaft. Wenn ich es von der Kommandozeile aus mache
psql -U postgres
Es funktioniert völlig in Ordnung, aber wenn ich versuche, den Rails-Server oder die Rails-Konsole mit demselben Benutzernamen und Passwort auszuführen, wird diese Fehlermeldung angezeigt
...activerecord-3.0.9/lib/active_record/connection_adapters/postgresql_adapter.rb:950:in `initialize': could not connect to server: Permission denied (PGError)
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
Irgendwelche Ideen, was los sein könnte, wären super hilfreich! Vielen Dank!
Antworten:
Es ist ein Pfadproblem. Mac OSX Lion enthält jetzt Postgresql im System. Wenn Sie ein tun
which psql
werden sehen , Sie wahrscheinlichusr/bin/psql
stattusr/local/bin/psql
dem korrekt jemandes HomeBrew. Wenn Sie ausführenbrew doctor
, sollten Sie eine Meldung erhalten, die besagt, dass Sieusr/local/bin
dem Kopf Ihrer PATH env-Variablen hinzufügen müssen .Bearbeiten Sie Ihr .bash_profile oder .profile oder die von Ihnen verwendete Shell und fügen Sie Folgendes hinzu:
export PATH=/usr/local/bin:$PATH
Als ersten Export für die
PATH
dann beenden Sie entweder Ihre Shell-Sitzung oder quellen Ihre Datei mitsource ~/.bash_profile
und es sollte jetzt wieder OK sein.quelle
Für diejenigen unter Ihnen, die interessiert sind, habe ich die Lösung zusammengestellt. Alles was ich brauchte war hinzuzufügen
auf die database.yml für meine Umgebung und alles war Soße.
quelle
Ich hatte genau dieses Problem mit Mountain Lion, aber das einzige, was für mich funktionierte, war dieses Update :
Überprüfen Sie, wo sich das eigentliche Ziel befindet:
Ich musste dieses Verzeichnis erstellen:
Erstellen Sie dann mit dem Ergebnis aus dem obigen Fund diesen Symlink:
Ich vermute, dass Sie für die meisten Leute auf Mountain Lion einfach das Verzeichnis erstellen und den Symlink erstellen können und keine Zeit damit verschwenden, den Suchvorgang durchzuführen, es sei denn, der Symlink funktioniert nicht.
PS - mein PostgreSQL wurde über das offizielle Installationsprogramm installiert.
quelle
Wenn das Problem weiterhin besteht, nachdem Sie den Pfad geändert haben (wie bei mir), versuchen Sie dies auch ...
Es scheint, dass das Problem (teilweise) im pg-Edelstein selbst liegt. Beim Erstellen wird herausgefunden, wo sich der Domain-Socket befinden sollte. Wenn Sie den Speicherort des Domain-Sockets nachträglich ändern, scheint er erst wirksam zu werden, wenn Sie den Edelstein neu erstellen.
quelle
Für diejenigen, die direkt vom offiziellen Installationsprogramm installiert haben, funktioniert das Hinzufügen des Hosts zum Befehl ohne Pfadänderungen:
quelle
Ich hatte das gleiche Problem und hatte Probleme, John Wangs Lösung zum Laufen zu bringen. Wie Darren bemerkte, gibt es ein Problem mit dem pg-Edelstein. Damit es funktioniert, musste ich:
Dann neu installieren.
Was es zum Laufen gebracht hat.
quelle
Ich bin auch darauf gestoßen, aber ich hatte selbst Postgres installiert (nicht mit Homebrew). Wenn dies der Fall ist, müssen Sie den alten Pfad zu psql finden (der möglicherweise / usr / local / bin ist, für mich jedoch / usr / local / pgsql / bin) und diesen Ihrem $ PATH voranstellen.
(vorher)
which psql
=> / usr / bin / psql(fix) export PATH = / usr / local / psql / bin: $ PATH
(nach) `which psql '=> / usr / local / psql / bin
John Wangs Vorschlag, das
source ~/.bash_rc
später zu Ihrem bash_rc hinzuzufügen, ist golden.quelle
Ist das für Homebrew? Ports scheint es in:
Stellen Sie also sicher, dass Sie den Export verwenden
Problem mit Mac-Ports: https://trac.macports.org/ticket/30125
quelle
Ich bin mit den am besten bewerteten Antworten nicht zufrieden, da sie entweder betriebssystemspezifisch sind oder Postgres neu zuordnen, um TCP anstelle von Domain-Sockets zu verwenden, wie von @pilif hervorgehoben. Ich habe eine andere Lösung gesehen, bei der die Standardpfade auf Systemebene neu angeordnet werden, um den Pfad von Brew vor einem Kernsystempfad zu überprüfen. Dies scheint jedoch gefährlich zu sein, da dies Auswirkungen auf alle anderen Kollisionen von Anwendungsnamen wie diese haben kann.
Diese Seite beschreibt eine Lösung, die mein Kollege gefunden hat. Es kommt darauf an, ein einzelnes Shell-Skript auszuführen, das dies tut
Dies ist mit der Einschränkung verbunden, dass der Standard-Postgres des Systems das ist, was Brew installiert hat. Sie müssen also ein Urteil darüber fällen, ob dies für Sie richtig ist. Ich sehe mich nicht in Postgres 8.4 speziell über 9.x, sondern in YMMV
quelle
Eine andere mögliche Lösung, die für mich funktioniert hat, ist das Zurücksetzen der Postmaster-Datei durch Löschen. Einfach ausführen:
Es lohnt sich, das Protokoll auf Fehler zu überprüfen, die Sie hier finden:
Die Fehlermeldung, die ich hatte, war:
Danach hat alles super geklappt.
quelle
In meinem Fall wurde der Server aufgrund falscher Einstellungen für den gemeinsam genutzten Speicher nicht gestartet. Zuerst war ich verwirrt, weil mehrere Postgres-Prozesse ausgeführt wurden, aber dies waren Standardsystemprozesse. Suchen Sie nach
postmaster
Prozessen!Ich musste lediglich die Einstellungen für den gemeinsam genutzten Speicher ändern . In meinem Fall war es nicht nötig, an den Pfadeinstellungen herumzuspielen.
quelle
Möglicherweise müssen Sie den Host Ihrer Datenbank angeben.
quelle
Wenn Sie eine dauerhafte Änderung Ihres $ PATH möchten, versuchen Sie Folgendes :
Dies wird Ihre neu schreiben
~/.MacOSX/environment.plist
.quelle
Ich bin neu bei Rails, aber das Hinzufügen von Folgendes zu database.yml hat bei mir funktioniert:
Nicht sicher, warum Rails standardmäßig Domänensockets anstelle von TCP verwendet, während PostgreSQL standardmäßig keine Domänensockets einrichtet.
quelle
Mein PostgreSQL ist in / Library / PostgreSQL installiert, so dass / usr / var für mich nicht funktioniert hat.
Es scheint, dass Woz richtig ist, weil jedes Mal, wenn ich den Deckel meines MacBook Pro schließe, es abstürzt ... Folgendes hat nach dem Absturz für mich funktioniert:
quelle