Kann keine Verbindung zu lokalem PostgreSQL herstellen


124

Ich habe es geschafft, meine lokale Entwicklungsumgebung zu borken.

Alle meine lokalen Rails-Apps geben jetzt den Fehler aus:

PGError
could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Ich habe keine Ahnung, was das verursacht hat.

Bei der Suche nach einer Lösung habe ich alle gebündelten Edelsteine, aktualisierten Systemedelsteine ​​und aktualisierten MacPorts aktualisiert. Keine Freude.

Andere haben dieses Problem beim Upgrade von OSX Leopard auf Lion gemeldet, da Unklarheiten darüber bestehen, welche Version von Postgres verwendet werden soll (dh OSX-Version oder MacPorts-Version). Ich leite Lion seit mehreren Monaten, daher scheint es seltsam, dass dies jetzt passieren sollte.

Ich zögere es, zu viel herumzuspielen, ohne vorher zu verstehen, wo das Problem liegt. Wie kann ich dies methodisch debuggen?

Wie kann ich feststellen, wie viele Versionen von PostgreSQL sich auf meinem System befinden, auf welche Version zugegriffen wird und wo sie sich befindet? Wie behebe ich das, wenn das falsche PostgreSQL verwendet wird?

Entschuldigung für die Noob-Fragen. Ich lerne immer noch, wie das funktioniert! Vielen Dank für Hinweise.

BEARBEITEN

Einige Updates basierend auf Vorschlägen und Kommentaren unten.

Ich habe versucht zu laufen, pg_lsclusterswas einen command not foundFehler zurückgab .

Ich habe dann versucht, meine Datei pg_hba.conf zu lokalisieren und diese drei Beispieldateien gefunden:

/opt/local/share/postgresql84/pg_hba.conf.sample
/opt/local/var/macports/software/postgresql84/8.4.7_0/opt/local/share/postgresql84/pg_hba.conf.sample
/usr/share/postgresql/pg_hba.conf.sample

Ich gehe also davon aus, dass 3 Versionen von PSQL installiert sind? Macports, OSX Standard und ???.

Ich habe dann nach dem Startskript von launchctl gesucht, ps -ef | grep postgresdas zurückgegeben wurde

0    56     1   0 11:41AM ??         0:00.02 /opt/local/bin/daemondo --label=postgresql84-server --start-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper start ; --stop-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper stop ; --restart-cmd /opt/local/etc/LaunchDaemons/org.macports.postgresql84-server/postgresql84-server.wrapper restart ; --pid=none
  500   372     1   0 11:42AM ??         0:00.17 /opt/local/lib/postgresql84/bin/postgres -D /opt/local/var/db/postgresql84/defaultdb
  500   766   372   0 11:43AM ??         0:00.37 postgres: writer process                                                                                                                                                                                                                                                                                                                   
  500   767   372   0 11:43AM ??         0:00.24 postgres: wal writer process                                                                                                                                                                                                                                                                                                               
  500   768   372   0 11:43AM ??         0:00.16 postgres: autovacuum launcher process                                                                                                                                                                                                                                                                                                      
  500   769   372   0 11:43AM ??         0:00.08 postgres: stats collector process                                                                                                                                                                                                                                                                                                          
  501  4497  1016   0 12:36PM ttys000    0:00.00 grep postgres

Ich habe den Inhalt von postgresql84-server.wrapper unter http://pastebin.com/Gj5TpP62 veröffentlicht .

Ich habe versucht zu laufen, port load postgresql184-serveraber eine Fehlermeldung erhalten Error: Port postgresql184-server not found.

Ich bin immer noch sehr verwirrt, wie ich das beheben kann, und schätze alle "für Dummies" -Zeiger.

Vielen Dank!

EDIT2

Dieses Problem begann, nachdem ich einige Probleme mit Daemondo hatte. Meine lokalen Rails-Apps stürzten mit einem Anwendungsfehler nach dem Motto "Daemondo Gem kann nicht gefunden werden" ab. Ich habe dann eine Reihe von Bundle-Updates, Gem-Updates, Port-Updates und Brew-Updates durchgesehen, um das Problem zu finden.

Könnte dieser Fehler ein Problem mit daemondo sein?


Beachten Sie, dass Ihre App beim Herstellen einer Verbindung über den TCP-Port anstelle des Unix-Domain-Sockets eine Verbindung herstellt. Sie müssen also postgres konfigurieren, um Netzwerkverbindungen zu akzeptieren, zumindest von localhost.
Paul Tomblin

Warum glaubst du das? Offensichtlich versuchen die Treiber, eine Verbindung über den Unix-Socket herzustellen. Obwohl sie an der falschen Stelle nach der Steckdose suchen.
Milen A. Radev


Genau. Es scheint eine Mac-Sache zu sein. OP könnte das Flag -h verwenden, nachdem überprüft wurde, ob der Postmaster ausgeführt wird.
Wildplasser

Bitte posten Sie die Ausgabe von pg_lsclustersund Ihre pg_hba.confDatei.
tscho

Antworten:


66

Dies sieht wirklich wie ein Dateiberechtigungsfehler aus. Unix-Domain-Sockets sind Dateien und verfügen wie alle anderen über Benutzerberechtigungen. Es sieht so aus, als ob der OSX-Benutzer, der versucht, auf die Datenbank zuzugreifen, keine Dateiberechtigungen für den Zugriff auf die Socket-Datei hat. Um dies zu bestätigen, habe ich einige Tests unter Ubuntu und psql durchgeführt, um den gleichen Fehler zu generieren (siehe unten).

Sie müssen die Berechtigungen für die Socket-Datei und ihre Verzeichnisse /varund überprüfen /var/pgsql_socket. Ihre Rails-App (OSX-Benutzer) muss über Ausführungsberechtigungen (x) für diese Verzeichnisse verfügen (vorzugsweise allen Berechtigungen erteilen), und der Socket sollte über vollständige Berechtigungen (wrx) verfügen. Sie können verwendenls -lAd <file> , um sie zu überprüfen. Wenn einer von ihnen ein Symlink ist, müssen Sie die Datei überprüfen oder den Link verweisen, auf den der Link verweist.

Sie können die Berechtigungen für das Verzeichnis für sich selbst ändern, aber der Socket wird von postgres in konfiguriert postgresql.conf. Dies befindet sich im selben Verzeichnis wie pg_hba.conf(Sie müssen herausfinden, welches). Sobald Sie die Berechtigungen festgelegt haben, müssen Sie postgresql neu starten.

# postgresql.conf should contain...
unix_socket_directory = '/var/run/postgresql'       # dont worry if yours is different
#unix_socket_group = ''                             # default is fine here
#unix_socket_permissions = 0777                     # check this one and uncomment if necessary.

BEARBEITEN:

Ich habe eine schnelle Suche bei Google durchgeführt, die Sie möglicherweise untersuchen möchten, um festzustellen, ob sie relevant ist. Dies kann dazu führen, dass der Versuch, findIhre Konfigurationsdatei zu erstellen, fehlschlägt.

http://www.postgresqlformac.com/server/howto_edit_postgresql_confi.html


Fehlermeldungen:

Benutzer nicht in pg_hba.conf gefunden

psql: FATAL:  no pg_hba.conf entry for host "[local]", user "couling", database "main", SSL off

Benutzer hat Passwort-Authentifizierung fehlgeschlagen:

psql: FATAL:  password authentication failed for user "couling"

Fehlende Unix-Socket-Datei:

psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Es gibt einen Unix-Socket, aber der Server hört nicht zu.

psql: could not connect to server: Connection refused
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

Ungültige Dateiberechtigungen für Unix-Socket-Dateien :

psql: could not connect to server: Permission denied
    Is the server running locally and accepting
    connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

1
danke für diese ideen @couling. Das fühlt sich nach der richtigen Richtung an. Aber mein Setup hat etwas sehr Seltsames. Denken Sie daran, dass dies bis vor kurzem perfekt funktioniert hat. Ich habe die drei Postgres-Verzeichnisse auf meinem System durchgesehen. Sie enthalten alle conf.sample-Dateien (pg_hba, pg_ident, pg_service usw.), aber keine .conf-Dateien. Dies sollte nicht der Fall sein, richtig? Auch das Verzeichnis, das .s.PGSQL.5432 enthalten soll, ist leer. Stattdessen habe ich eine Datei unter /private/tmp/.s.PGSQL.5432.lock. PSGibt Postgres-Prozesse zurück, damit sie ausgeführt werden. Verwirrt!
Andy Harvey

Ich habe einen zusätzlichen Link hinzugefügt. Soweit ich weiß, kann man postgresql ohne die postgresql.conf nicht wirklich haben (selbst wenn sie umbenannt wurde). Ihre erste Aufgabe muss es sein, dies zu finden.
Philip Couling

1
Es hat einige Zeit gedauert, meine Verzeichnisse zu durchsuchen und die richtigen Dateien zu finden, aber das war in der Tat das Problem. Danke für die sehr ausführliche Antwort. Nachdem ich das richtige Verzeichnis gefunden hatte, musste ich das Socket-Verzeichnis, das Datenverzeichnis, die hba_file und die ident_file in der postgresql.conf festlegen. Danke dir!
Andy Harvey

1
Könnte einigen Leuten helfen: Ich habe Brew verwendet, um Postgres unter meinem Konto zu installieren. In meinem Fall stellte sich heraus, dass der Ordner / var / pgsql_socket / dem Benutzer _postgres gehörte, und das Ändern des Besitzers in mein Konto (darren) hat dieses Problem behoben. Sie sind sich nicht sicher, warum Brew den Besitz dieses Ordners überhaupt nicht richtig eingestellt hat ...?
Darren Jensen

Danke couling. Ich konnte keine Verbindung herstellen und das Einrichten des unix_socket_directory war das Richtige.
Ryan Bigg

41

Mein Bauchgefühl ist, dass dies (wieder) ein Mac / OSX-Ding ist: Das Front-End und das Back-End nehmen einen anderen Ort für den Unix-Domain-Socket ein (der als Rendezvous fungiert) Punkt fungiert).

Checkliste:

  • Läuft Postgres: ps aux | grep postgres | grep -v grep sollte den Trick machen
  • Wo befindet sich die Steckdose: find / -name .s.PGSQL.5432 -ls (Der Socket befand sich früher in / tmp. Sie könnten dort nachsehen.)
  • Selbst wenn Sie den Socket (Unix-Domain) finden, könnte der Client einen anderen Speicherort verwenden. (Dies geschieht, wenn Sie Distributionen mischen oder wenn eine Distribution irgendwo installiert ist und eine andere (z. B. von der Quelle) Installation an anderer Stelle installiert ist), wobei Client und Server unterschiedliche Rendez-Vous- Adressen verwenden.

Wenn postgres ausgeführt wird und der Socket tatsächlich vorhanden ist, können Sie Folgendes verwenden:

  • psql -h /the/directory/where/the/socket/was/found mydbname

(der versucht, eine Verbindung zum Unix-Domain-Socket herzustellen)

;; Sie sollten jetzt die psql-Eingabeaufforderung erhalten: versuchen Sie \dund \qbeenden Sie dann. Sie könnten auch versuchen:

  • psql -h localhost mydbname.

(der versucht, eine Verbindung zu localhost herzustellen (127.0.0.1)

Wenn diese Versuche aufgrund unzureichender Autorisierung fehlschlagen, können Sie pg_hba.conf (und SIGHUP oder Neustart) ändern. In diesem Fall: Überprüfen Sie auch die Protokolle.

Eine ähnliche Frage: Postgres kann nicht gestartet werden

Hinweis: Wenn Sie zur psql-Eingabeaufforderung gelangen, können Sie dieses Problem schnell beheben, indem Sie Folgendes config/database.ymlhinzufügen:

host: localhost

oder Sie könnten versuchen hinzuzufügen:

host: /the/directory/where/the/socket/was/found

In meinem Fall, host: /tmp


1
@ Wildplasser danke für deine Antwort. Dies brachte mich in die richtige Richtung und die detaillierte Antwort von Couling gab die Lösung.
Andy Harvey

6
Das Hinzufügen des Hosts: localhost zu meiner database.yml hat mein Problem behoben. Danke :)
Automatico

1
meins ist in / privat / .... Verrücktheit. Ich habe es gebraut, aber dieser Laptop hatte vorher auch Probleme. Seltsam. diese database.yml war der Schlüssel!
pjammer

4
Seltsam. Das Hinzufügen von "localhost" zu meiner database.yml hat auch funktioniert, aber warum? Ich hatte das vorher nicht und alles funktionierte gut. Aber ich glaube nicht, dass ich in letzter Zeit etwas hinzugefügt habe und plötzlich war es schon so. > _ <
Index

1
Der Trick für mich hier war der Socket-Pfad - er war in / run not / var / run - danke!
Qodeninja

26

Versuchen Sie, pg gem ( gem uninstall pg) zu deinstallieren und dann neu zu installieren - wenn Sie Bundler verwenden, dann bundle installsonst gem install pg. Stellen Sie außerdem sicher, dass path die richtige Version aufnimmt: Lion hat eine Version von posgresql (frühere Versionen nicht) und befindet sich möglicherweise im Pfad vor Ihrer lokal installierten Version (z. B. MacPorts, Homebrew).

In meinem Fall: Homebrew-Installation von Postgresql, aktualisiertem Postgresql, Rails usw. und dann dieser Fehler. Das Deinstallieren und Neuinstallieren des pg gem hat es für mich getan.


8
Bundle Exec Gem Pristine pg <== wird auch den Trick machen
Ben Walding

Ich habe keinen Zweifel, dass der Fehler des OP durch eine Reihe von Dingen verursacht werden kann, aber dies ist die Lösung, die für mich funktioniert hat.
Redhotvengeance

20

Der Speicherort der Socket-Datei wird beim Kompilieren in den Edelstein eingebrannt. Daher müssen Sie Ihren pg-Edelstein neu erstellen.

gem pristine pg
# or
bundle exec gem pristine pg

Dies sollte dieses spezielle Problem beheben.


Ich bekam das in dieser Frage beschriebene Problem, nachdem ich Postgres von 9.1x auf 9.3x aktualisiert hatte. Diese Antwort hat es für mich behoben (ebenso wie das Hinzufügen von 'localhost' zu meiner database.yml, aber ich mag diesen Ansatz besser).
Joshua Flanagan

16

Wenn Sie einen ähnlichen Fehler erhalten:

psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Dies könnte den Trick machen (es hat für mich getan):

initdb /usr/local/var/postgres -E utf8

Das angegebene Verzeichnis sollte unterschiedlich sein, wenn Sie OSX / Brew nicht verwenden.

Hinweis: Dies ist nicht die genaue Fehlermeldung, die oben angezeigt wird. Dieser Thread ist jedoch das erste Ergebnis für diese Fehlermeldung.


6
Ich habe immer wieder dieses Problem, aber dies ist das erste Mal, dass ich es mit DIESER Lösung löse. Auch musste rm -fr /usr/local/var/postgresvor dem Laufeninitb
Raf

1
Nachdem ich dies getan habe (sowohl Neal's als auch Raf's), habe ich die Meldung "Fatal" erhalten, dass kein Fehler vorliegt. Also lief dann "rake db: create: all" und "rake db: migrate" und schließlich funktionierte alles wieder.
Deborah

Ich musste es rm -rf /usr/local/var/postgresdann auch tun initdb /usr/local/var/postgres -E utf8. Stellen Sie jedoch sicher, dass postgres nicht ausgeführt wird, da das Verzeichnis sonst fast sofort neu erstellt wird.
Josh W Lewis

8

Was diesen Fehler für mich behoben hat, war das Löschen einer Datei namens postmaster.pid im postgres-Verzeichnis. Eine schrittweise Anleitung finden Sie in meiner Frage / Antwort unter dem folgenden Link. Mein Problem hatte nichts mit Dateiberechtigungen zu tun:

psql: Verbindung zum Server konnte nicht hergestellt werden: Keine solche Datei oder kein solches Verzeichnis (Mac OS X)

Die Leute, die diese Frage beantworteten, ließen jedoch viel Spiel fallen, danke dafür! Ich habe alles, was ich konnte, positiv bewertet


Da in der hier akzeptierten Antwort ein Problem mit den Dateiberechtigungen festgestellt wird, scheint es offensichtlich, dass Ihr Beitrag und dieser nicht miteinander zusammenhängen.
Andrew Barber

7

Auf diese Weise habe ich diese Fehlermeldung gelöst, die teilweise auf der Antwort von Wildplasser basiert.

find / -name .s.PGSQL.5432 -ls 2> /dev/null
  => ... /tmp/.s.PGSQL.5432

Also, da ist meine Steckdose oder was auch immer, aber der Kunde sucht danach:

/var/run/postgresql/.s.PGSQL.5432

Stellen Sie also ganz einfach eine symbolische Verknüpfung her zu /tmp/.s.PGSQL.5432:

sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

Hoffe das hilft jedem. Das scheint irgendwie falsch zu sein, aber hey, es funktioniert!


1
Dies funktionierte für mich: sudo ln -s /tmp/.s.PGSQL.5432 /var/pgsql_socket/.s.PGSQL.5432
ardochhigh

Danke :) Das hat geholfen. Vergessen Sie jedoch nicht, vor dem Erstellen von Symlink einen sudo mkdir /var/run/postgresqlOrdner zu erstellen (in meinem Fall war die ID nicht vorhanden und wurde vom Installationsprogramm für Seite 9.3.X nicht erstellt).
Kovpack

2
Oh, diese Lösung stellte sich als "einmalige" Lösung heraus, die ich nach jedem Neustart wiederholen musste. Für Rails habe ich eine andere Lösung gefunden - Datenbankkonfigurationsdatei ändern (Antwort unten hinzugefügt).
Kovpack

6

Ich bekam dies nach dem Upgrade auf ein neues Postgres - ich wusste nicht, dass ich Datendateien gespeichert hatte.

Zuerst habe ich versucht, den Postgres-Server zu starten:

postgres -D /usr/local/var/postgres

So habe ich diesen Fehler gesehen

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.0, which is not compatible with this version 9.3.5.

Also fand ich diese Antwort auf SO - im Zusammenhang mit einem Inkompatibilitätsfehler: /server/342626/how-do-i-upgrade-postgresl-database-incompatibility-error

Dies hat es behoben

mv /usr/local/var/postgres /usr/local/var/postgres.old
initdb -D /usr/local/var/postgres

4

Ich habe nur bestätigt, dass ich ein ähnliches Problem mit PSQL und Django hatte.

Es sah so aus, als ob mein psql-Server nicht richtig heruntergefahren wurde und die Datei postmaster.pid noch in meinem Postgres-Ordner vorhanden war (sollte beim ordnungsgemäßen Herunterfahren automatisch gelöscht werden).

Löschte dies und alles gut


2
Dies hat das Problem für mich gelöst. Mein Computer fror ein und ich musste hart herunterfahren. Als ich es wieder startete, sagte Postgres, dass das psql: could not connect to server: No such file or directory.Entfernen postmaster.pidvon /usr/local/var/postgresalles wieder funktioniert.
Ryan Epp

1
Das ist mir auch passiert. Mein Mac wurde aufgrund einer Kernel-Panik neu gestartet und ich musste postmaster.pid löschen, bevor ich wieder arbeiten konnte.
Ben

4

Ich habe den gleichen Fehler erhalten (es stellte sich heraus, dass es sich um einen Fehler handelte postmaster.pid . So habe ich Postgres wieder in Betrieb genommen (Dank an Ricardo Burillo für die Korrektur ):

$ rm /usr/local/var/postgres/postmaster.pid 
$ pg_resetxlog -f /usr/local/var/postgres

Dies funktionierte für mich, obwohl die pg_resetxlogzurückgegebene Sperrdatei "postmaster.pid" existiert.
Elise

3

Ich hatte ein ähnliches Problem beim Versuch, postgresql mit Schienen zu verwenden. Das Aktualisieren meiner Gemfile auf die Verwendung einer neuen Version von gem pg löst dieses Problem für mich. (gem pg version 0.16.0 funktioniert). In der Gemfile verwenden:

gem 'pg', '0.16.0'

Führen Sie dann die folgenden Schritte aus, um den Edelstein zu aktualisieren

bundle install --without production
bundle update
bundle install

1
Dies hat das Problem auch für mich behoben. Ich war auf 0.15.1, als ich Rails 4.0 Beta durchlief und jetzt Ruby 2.0.0 verwendete. Nach dem Upgrade auf S. 0.16.0 wurde das Problem behoben.
Bratsche

Das Problem wurde für mich am 4.1.0.beta1
Andreas

3

Ich habe viele Themen zu diesem Fehler gelesen und die Lösung für mich bestand darin, die Postgres einfach neu zu starten mit:

sudo service postgresql restart

Was hier nicht erwähnt wird.


3
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

Ich suche eine Weile nach der Lösung. Also, dieser hat das Problem auch für mich behoben (Datenbank neu starten):

rm -r /usr/local/var/postgres  
initdb /usr/local/var/postgres -E utf8  
pg_ctl -D /usr/local/var/postgres -l logfile start

Ich benutze OS X 10.11.3 mit Brew.


2

Dies ist mir heute passiert, nachdem der Akku meines Macbooks leer war. Ich denke, dies kann durch unsachgemäßes Herunterfahren verursacht werden. Alles was Sie in Fällen wie meinem tun müssen, ist postmaster.pid zu löschen

Navigieren Sie zum Ordner

cd /usr/local/var/postgres

Überprüfen Sie, ob postmaster.pid vorhanden ist

ls

Entfernen Sie postmaster.pid

rm postmaster.pid

2

In meinem Fall war keine der vorherigen Lösungen gut. Anstatt Socket zu verwenden, können Sie die TCP host+ port-Nummer in der Rails-Konfigurationsdatei verwenden. Fügen Sie in der database.ymlDatei einfach zwei Zeilen wie hier hinzu:

...
adapter: postgresql
encoding: unicode
pool: 5
host: localhost
port: 5432

Das hat mein Problem gelöst :)

Bevor ich dieses Update verwendet habe:

sudo mkdir /var/run/postgresql
sudo ln -s /tmp/.s.PGSQL.5432 /var/run/postgresql/.s.PGSQL.5432

Aber nach jedem Neustart /tmp/.s.PGSQL.5432wurde gelöscht und ich musste diese Befehle wiederholen. Die Lösung funktioniert, aber es ist schrecklich, also ändern Sie besser einfach die Konfigurationsdatei der Rails-Datenbank :)


2

Ich habe diesen Fehler erhalten, als ich Posgtres mit Django eingerichtet habe. Ich verwende Back Track und es wird Postgres installiert. Ich gehe davon aus, dass die Einstellungen das Problem sind. Ich habe es behoben, indem ich es vollständig entfernt und dann neu installiert habe.

sudo apt-get remove postgresql
sudo apt-get purge postgresql

Führen Sie jetzt aus:

apt-get --purge remove postgresql\*

um alles PostgreSQL von Ihrem System zu entfernen. Nur das Postgres-Paket zu löschen, reicht nicht aus, da es sich nur um ein leeres Metapaket handelt.

Führen Sie Folgendes aus, nachdem alle PostgreSQL-Pakete entfernt wurden:

rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
userdel -r postgres
groupdel postgres

Sie sollten jetzt in der Lage sein:

apt-get install postgresql

1

MacOSX hier. Ich hatte das gleiche Problem, nachdem ich meine Postresql-Installation mit Homebrew von 9.1 auf 9.1.2 aktualisiert hatte. (Denken Sie übrigens daran, Datenbanken vor dem Upgrade mit pg_dump zu sichern. Datenbanken vor 9.1 sind nicht kompatibel.) Gleiches Problem, gleiche Fehlermeldungen.

Das Deinstallieren des pg gem hat den Trick für mich getan. Ich musste tatsächlich ziemlich viel tanzen, um das Problem zu entdecken. Zuerst habe ich eine globale Edelstein-Deinstallation durchgeführt und das Deck von allen alten Edelsteinen befreit (es gab einige). Dann entfernte ich pg aus meiner Gemfile, bündelte neu, stellte die pg-Referenz wieder her und prallte erneut ab.

Danach funktionierte es wie ein Zauber.


1

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 .bash_profile(die sich in meinem Ausgangsverzeichnis befindet) eine Zeile (Befehl ) hinzu:

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

3) Starten Sie Postgres93.appvom /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_nameund andere Befehle auszuführen und zu sehen, dass es funktionierte! Postgres93.appkann 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 betrachten

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.


0

Ich hatte dieses Problem, das mich plagte, und bei weiteren Untersuchungen (Ausführen rake db:setup) stellte ich fest, dass Rails versuchte, eine Verbindung zu einer zuvor verwendeten Postgres-Instanz herzustellen - eine, die in env-Variablen als DATABASE_URL gespeichert war.

Die Reparatur: unset DATABASE_URL

Quelle: https://stackoverflow.com/a/17420624/2577622


0

Ich habe die meisten Lösungen für dieses Problem ausprobiert, konnte aber keine zum Laufen bringen.

Ich lief, lsof -P | grep ':5432' | awk '{print $2}'was die PID des laufenden Prozesses zeigte. Ich konnte es jedoch nicht töten kill -9 <pid>.

Als ich lief pkill postgresql, hörte der Prozess schließlich auf. Hoffe das hilft.


0
gem uninstall pg

Unter OS X mit Homebrew:

gem install pg -- --with-pg-config=/usr/local/bin/pg_config
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.