Postgres konnte keine Verbindung zum Server herstellen

415

Nachdem ich das Update und das Upgrade durchgeführt hatte, hatten meine Postgres ein Problem. Ich habe versucht, postgres zu deinstallieren und erneut zu installieren, aber es hat nicht so gut funktioniert.

Dies ist die Fehlermeldung. (Ich habe diese Fehlermeldung auch erhalten, wenn ich versuche, rake db: migrate auszuführen.)

$ psql
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"?

Wie kann ich das lösen?

Mac-Version: Berglöwe.

Homebrew-Version: 0.9.3

Postgres-Version: psql (PostgreSQL) 9.2.1

Und das habe ich getan.

12:30 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.2.1...
12:31 ~/D/works$ brew uninstall postgresql
Uninstalling /usr/local/Cellar/postgresql/9.1.4...
12:31 ~/D/works$ psql --version
bash: /usr/local/bin/psql: No such file or directory
12:33 ~/D/works$ brew install postgresql
==> Downloading http://ftp.postgresql.org/pub/source/v9.2.1/postgresql-9.2.1.tar.bz2
Already downloaded: /Library/Caches/Homebrew/postgresql-9.2.1.tar.bz2
......
......
==> Summary
/usr/local/Cellar/postgresql/9.2.1: 2814 files, 38M, built in 2.7 minutes
12:37 ~/D/works$ initdb /usr/local/var/postgres -E utf8
The files belonging to this database system will be owned by user "laigary".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default text search configuration will be set to "english".

initdb: directory "/usr/local/var/postgres" exists but is not empty
If you want to create a new database system, either remove or empty
the directory "/usr/local/var/postgres" or run initdb
with an argument other than "/usr/local/var/postgres".
12:39 ~/D/works$ mkdir -p ~/Library/LaunchAgents
12:39 ~/D/works$   cp /usr/local/Cellar/postgresql/9.2.1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
12:39 ~/D/works$   launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
homebrew.mxcl.postgresql: Already loaded
12:39 ~/D/works$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
server starting
12:39 ~/D/works$ env ARCHFLAGS="-arch x86_64" gem install pg
Building native extensions.  This could take a while...
Successfully installed pg-0.14.1
1 gem installed
12:42 ~/D/works$ psql --version
psql (PostgreSQL) 9.2.1
12:42 ~/D/works$ psql
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"?

Nachdem ich howbrew neu installiert habe, wird bei der Verwendung $ psqlkeine Fehlermeldung angezeigt .

Aber ich laufe rake db:migratein meiner Rails App, es zeigt:

could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:1213:in `connect'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:309:in `new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:319:in `checkout_new_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:241:in `block (2 levels) in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `loop'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:236:in `block in checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:233:in `checkout'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:96:in `block in connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_pool.rb:404:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:170:in `retrieve_connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/connection_adapters/abstract/connection_specification.rb:144:in `connection'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:107:in `rescue in create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:51:in `create_database'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (3 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/gems/1.9.1/gems/activerecord-3.2.8/lib/active_record/railties/databases.rake:40:in `block (2 levels) in <top (required)>'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `call'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:200:in `execute'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/task.rb:144:in `invoke'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `each'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:88:in `top_level'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:66:in `block in run'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling'
/usr/local/Cellar/ruby/1.9.3-p327/lib/ruby/1.9.1/rake/application.rb:63:in `run'
/usr/local/bin/rake:32:in `<main>'
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"riy_development", "pool"=>5, "username"=>nil, "password"=>nil}

Endlich finde ich die Lösung.

$ sudo mkdir /var/pgsql_socket/
$ sudo ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/

Diese Lösung ist etwas knifflig, funktioniert aber. Hoffe, jemand hat eine bessere Lösung

Aktualisieren

Das funktioniert auch bei mir.

rm /usr/local/var/postgres/postmaster.pid
Gary Lai
quelle
3
Ich habe genau das gleiche Problem, aber Ihre Lösung hat bei mir nicht funktioniert. Ich denke, dies ist ein Berechtigungsproblem, aber ich habe keine Kenntnisse über Dateiberechtigungen, um es zu beheben.
Ajbraus
Für diejenigen, die PG über Homebrew installieren und Probleme haben, habe ich eine andere Antwort gefunden. Deinstallieren Sie einfach pg gem und installieren Sie es mit Homebrew-Konfigurationen neu. Siehe die Antwort unter stackoverflow.com/a/19609228/1072058 .
Zquintana
ähnliche Antwort hier - stackoverflow.com/questions/13573204/…
VelLes
1
Starten Sie postgres.
atw
4
Aktualisieren Sie Ihre vorhandene Version mit dem folgenden Befehl auf die neuere Version brew postgresql-upgrade-database

Antworten:

798

Hatte ein ähnliches Problem; Eine PID-Datei blockierte den Start von Postgres. Etwas reparieren:

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

und dann ist alles gut.

Jonathanpberger
quelle
4
Dies funktionierte für mich unter OSX Mavericks, nachdem dieses Problem bei einem Update / Neustart aufgetreten war.
Eprothro
3
@jstafford danke, ich habe es bereits gelöst! :) Die Lösung bestand darin, über homebew zu deinstallieren und dann meinen Computer sofort neu zu starten, damit ich postgres neu installieren kann. Die alte Version lief im Hintergrund und erstellte jedes Mal Dateien und Konflikte, wenn ich versuchte, postgres neu zu installieren.
Betoharres
199
Dies hat bei Mavericks nicht funktioniert:rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
sscirrus
16
Dies funktionierte für mich, nachdem ich nach dem Löschen mit Postgres beginnen musste. # pg_ctl -D / usr / local / var / postgres -l /usr/local/var/postgres/server.log Start
Ricardo Castañeda
12
Ich empfehle, das Serverprotokoll zu verfolgen, um sicherzustellen, dass dies tatsächlich das Problem ist:tail /usr/local/var/postgres/server.log
Josh Bodah
255

Dies kann manchmal ein Problem bei einem Postgres-Upgrade sein.

In meinem Fall geschah dies beim Upgrade von 9.3 auf 9.4.

Siehe http://www.postgresql.org/docs/9.4/static/upgrading.html

OS X / Homebrew:

Versuchen Sie es mit Laufen postgres -D /usr/local/var/postgres- es gibt Ihnen eine viel ausführlichere Ausgabe, wenn postgres nicht gestartet werden kann.

In meinem Fall wurden beim Ausführen rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8meine alten Datenbanken entfernt und anschließend das Postgres-Datenbankschema neu initialisiert.

Vielen Dank an https://github.com/Homebrew/homebrew/issues/35240 für diese Lösung.

Nach der Neuerstellung meiner Datenbanken (mit rake db:create) hat alles wieder gut funktioniert.

FreePender
quelle
1
Dies funktionierte bei mir mit einem Homebrew, der Postgres auf Yosemite installiert hatte.
Cpursley
7
Wenn beim Ausführen postgres -D /usr/local/var/postgresangezeigt wird, dass das Datenverzeichnis mit einer älteren, inkompatiblen Version von Postgres initialisiert wurde und Sie Ihre lokalen Daten nicht verlieren möchten, können Sie diesen Thread
Nathan Long
Nachdem der obige Befehl ausgeführt wurde, lief ich: pg_ctl -D /usr/local/var/postgres -l logfile startund dann startete mein Server im Hintergrund
Tommyixi
5
Verwenden Sie brew services start postgresunter OSX, um Postgres im Hintergrund zu starten, anstattpostgres -D /usr/local/var/postgres
Mike Andrianov
1
@coffekid Ich hatte das gleiche Problem und habe es mit den Anweisungen hier behoben
Micah Walter
68

Ich habe hier eine Lösung gefunden, die für mich funktioniert hat:

/dba/75214/psql-could-not-connect-to-server-no-such-file-or-directory

Grundsätzlich führen Sie den folgenden Befehl aus, um den Server manuell zu starten:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
Mosab Sasi
quelle
8
Von allen Antworten ist dies die einzige, die für mich funktioniert hat. Verwenden von El Capitan
Patrick_870206
Ich habe es mit diesem cmd versucht, aber es funktioniert nicht für mich !!
Harshit Trivedi
40

Wenn die Installation und Deinstallation von Postgres mit Brew für Sie nicht funktioniert, lesen Sie die Protokolle Ihrer Postgresql-Installation oder:

postgres -D /usr/local/var/postgres

Wenn Sie diese Art der Ausgabe sehen:

LOG:  skipping missing configuration file "/usr/local/var/postgres/postgresql.auto.conf"
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.4, which is not compatible with this version 9.6.1.

Versuchen Sie dann Folgendes:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

Starten Sie dann den Server:

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

Quelle

svelandiag
quelle
2
Dies funktioniert, wenn sich der Grund von der akzeptierten Antwort unterscheidet, dh die Datenbankdateien nicht mit der aktuellen Version kompatibel sind. Da genau das mein Problem war, stimme ich zu.
Falk Schuetzenmeister
1
Dieser Befehl funktioniert bei mir.
Ccr
34

Wenn die PID-Datei unter Yosemite den Start von Postgres blockiert und ein launchctlDaemon versucht (und fehlschlägt), die Datenbank-Daemons zu laden, müssen Sie die plist-Datei entladen:

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

Entfernen Sie dann die PID-Datei

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

Laden Sie dann den launchctlDaemon neu

$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Ryan Atallah
quelle
28

Für alle, die dies lesen und Postgres.app verwenden, benötigen Sie möglicherweise host: localhostin Ihrer database.yml. http://postgresapp.com/documentation#toc_3

David Winiecki
quelle
Dadurch wird die Verbindung von einem Socket zu einer TCP-Verbindung geändert, was negative Auswirkungen haben kann. Siehe stackoverflow.com/questions/6770649/…
Brett Bim
1
Hmm, eigentlich, wenn Sie abstimmen ... Vielleicht sagen Sie nicht warum? meta.stackoverflow.com/questions/252297/… Oder sagen Sie vielleicht warum, aber melden Sie sich zuerst ab, damit Sie anonym bleiben .
David Winiecki
Ich denke, die Abwahl ist, weil die ursprüngliche Frage nicht für Postgres.app, sondern für Homebrew war. Obwohl die Antwort irgendwo nützlich sein könnte, beantwortet sie die Frage nicht.
Brian Lieber
Der Link scheint nicht spezifisch zu sein (und die Suche nach "localhost" in der Vergangenheit hat keine Ergebnisse), aber dies hat das Problem für mich nach einer Stunde Suche behoben.
Sixty4bit
25

Das Aktualisieren der Datenbank funktioniert bei mir

brew postgresql-upgrade-database

Tomer G.
quelle
»Danke Tomer! Dies funktionierte für mich am 02.06.20 von 9.4 auf 12 unter macOS Mojave 10.14.6
Rob Bednark
19
brew services start postgres 

hat für mich gearbeitet!

rld
quelle
17

Überprüfen Sie, ob die Socket-Datei vorhanden ist.

$ ls -l /tmp/.s.PGSQL.5432
srwxrwxrwx  1 you  wheel  0 Nov 16 09:22 /tmp/.s.PGSQL.5432

Wenn dies nicht der Fall ist, überprüfen Sie Ihre postgresql.conf auf Änderungen an unix_socket_directory.

$ grep unix_socket /usr/local/var/postgres/postgresql.conf
#unix_socket_directory = ''     # (change requires restart)
#unix_socket_group = ''         # (change requires restart)
#unix_socket_permissions = 0777     # begin with 0 to use octal notation
jrwren
quelle
1
Dies ist meine Computerantwort. $ ls -l /tmp/.s.PGSQL.5432 ls: /tmp/.s.PGSQL.5432: No such file or directory $ grep unix_socket /usr/local/var/postgres/postgresql.conf #unix_socket_directory = '' # (change requires restart) #unix_socket_group = '' # (change requires restart) #unix_socket_permissions = 0777 # begin with 0 to use octal notation
Gary Lai
29
Endlich finde ich die Lösung. $ mkdir /var/pgsql_socket/ $ sudo mkdir /var/pgsql_socket/ $ ln -s /private/tmp/.s.PGSQL.5432 /var/pgsql_socket/Diese Lösung ist etwas knifflig, funktioniert aber. Hoffe, jemand hat eine bessere Lösung
Gary Lai
gute Arbeit @GaryLai. Sehr seltsam, dass ich nicht dasselbe mit meinem Homebrew Postgresql tun musste
jrwren
2
Dies kann einigen Leuten da draußen helfen: github.com/mxcl/homebrew/issues/14527
AdamT
14

Das Problem kann auch auf einen abgestürzten Prozess zurückgeführt werden, bei dem die Datei postmaster.pid zurückblieb. Ich mache das und arbeite:

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql
rld
quelle
10

Das Problem ist, dass auf dem Port 5432 bereits ein Dienst ausgeführt wird und über diesen Port keine psql-Socket-Verbindung hergestellt werden kann.

Ich habe die Socket-Datei entfernt

rm -rf /tmp/.s.PGSQL.5432/

Dann habe ich die Postgres-Dienste neu initialisiert

postgres -D /usr/local/var/postgres

Das hat bei mir funktioniert.

Abdullah Gürsu
quelle
7

Das Ändern der Konfigurationseinstellungen von postresql oder database.yml, das Ändern von $ PATH oder das Erstellen von Symlinks waren für mich nicht erforderlich. Alles was ich tun musste war gem uninstall pgund dann bundle(oder gem install pg).

Das Problem war, dass das pg-Juwel vor Homebrew-Postgres installiert wurde und die Einstellungen von der mit MacOS gelieferten Postgres-Version übernommen wurden. Durch die Neuinstallation (und damit die Neuerstellung der nativen Erweiterung) wurde das Problem behoben.

John
quelle
Ich wollte mich nur bedanken. Ich habe gerade PostgresApp unter macOS aktualisiert und obwohl ich eine Verbindung mit psql herstellen konnte, konnte ich keine Verbindung über Rails herstellen. Das Deinstallieren und Neuinstallieren des pg gem war genau das Richtige! :)
craig1410
7

Dies ist mir passiert, als ich ein Upgrade von 9.3.4 auf 9.5 durchgeführt habe, da die Datenbanken ohne ein Upgrade nicht kompatibel sind.

Ich habe pg_upgrade wie folgt verwendet:

Stoppen Sie Postgres

$ brew services stop postgresql

Aktualisieren Sie die Datenbanken:

$ pg_upgrade \
   -d /usr/local/var/postgres \
   -D /usr/local/var/postgres9.5 \
   -b /usr/local/Cellar/postgresql/9.3.4/bin/ \
   -B /usr/local/Cellar/postgresql/9.5.0/bin/ \
   -v

Archivieren Sie die alten Datenbanken:

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

Starten Sie postgres neu:

 $ brew services start postgresql

Aktualisierte Edelsteine ​​(für Schienen / aktive Aufzeichnung):

 $ gem uninstall pg
 $ gem uninstall activerecord-postgresql-adapter
 $ bundle install
stujo
quelle
Diese Anweisungen finden Sie auch unter kollektividea.com/blog/archives/2016/01/08/… und haben auch heute noch bei einem Upgrade von 9.4.0 auf 9.6.3 für mich funktioniert. Ich musste die .pid-Datei nicht manuell bearbeiten.
Jan Hettich
7

Der narrensicherste Weg, dies zu umgehen, ist zu tun

brew reinstall postgresql

Dadurch bleiben Ihre Benutzerberechtigungen usw. erhalten und alles wird auf neu zurückgesetzt. Funktioniert die ganze Zeit!

attaboyabhipro
quelle
7

Dies ist eigentlich, was Sie tun sollen:

Sie sollten sich stattdessen /usr/local/var/postgres/postmaster.pid ansehen

und dann schauen Sie sich die erste Zeile der Datei an - dies ist die schlechte PID

Lauf

ps aux | grep <PID>

zum Beispiel:

ps aux | grep 12345

dann mach

kill <PID>

zum Beispiel

kill 12345

Vorausgesetzt, es läuft noch

/superuser/553045/fatal-lock-file-postmaster-pid-already-exists

Hören Sie nicht auf die akzeptierte Antwort, sie ist schlecht und wird Ihre Daten beschädigen !!!

user1596067
quelle
Danke, das hat bei mir funktioniert. Das Entfernen der postmaster.pid in der akzeptierten Antwort war eigentlich nicht genug.
Abe Petrillo
4

Psql Option

-h Hostname --host = Hostname

: Gibt den Hostnamen des Computers an, auf dem der Server ausgeführt wird. Wenn der Wert mit einem Schrägstrich beginnt, wird er als Verzeichnis für den Unix-Domain-Socket verwendet.

$ grep "port\|unix_socket" /etc/postgresql/9.1/main/postgresql.conf
port = 5433                                         # (change requires restart)
unix_socket_directory = '/var/run/postgresql'       # (change requires resta

$ netstat -nalp | grep postgres
unix  2      [ ACC ]     STREAM     LISTENING     106753   4349/postgres       /tmp/.s.PGSQL.5432
unix  2      [ ACC ]     STREAM     LISTENING     10377 1031/postgres       /var/run/postgresql/.s.PGSQL.5433

Führen Sie psql mit der Option -host aus

$ psql -p 5433 -h /var/run/postgresql

Sie müssen keinen Softlink erstellen

Juno Choo
quelle
4

Kam auch unter MacOS Sierra auf dieses Problem und als wir pg_ctl wie oben beschrieben ausführten, hatten wir den folgenden Fehler pg_ctl: no database directory specified and environment variable PGDATA unset. Also haben wir hier die Schritte befolgt , die unser Problem gelöst haben, nämlich:

mkdir ~/.postgres

initdb ~/.postgres

pg_ctl -D ~/.postgres start

Austin
quelle
4

Wenn postgres mit homebrew installiert wurde, können Sie dies beheben, indem Sie Folgendes ausführen:

brew link postgres
Cl Local
quelle
4

Wenn Sie Ihr System herunterfahren, ohne psql zu beenden, hätte postgres einige Dateien nicht entfernt.

Ich habe die Datei postmaster.pid nicht im Speicherort usr / local / var / postgres gefunden

Also habe ich folgendes gemacht:

Brauservices starten postgresql

Mit dem obigen Befehl sollten Sie postgres starten

Ashwin
quelle
3

Ich bin auf dieses Problem gestoßen, nachdem ich versucht hatte, eine Datenbank wiederherzustellen / zu löschen / zu erstellen, während andere Prozesse darauf zugegriffen haben. MacOSX / Homebrew Fix war:

  1. Schließen Sie alle anderen zugreifenden Prozesse rails server, rails console,guard usw ...
  2. Laden / Entladen mit den Befehlen in brew info postgres
  3. Führen Sie "Wiederherstellen / Löschen / Erstellen von zuvor" aus
TomFuertes
quelle
3

FWIW das ist mir heute passiert, aber was passiert ist, war, dass ich zu der Zeit Ubuntu-Updates ausgeführt habe, die wahrscheinlich Postgres aktualisiert haben. Nach Abschluss des Updates konnte ich problemlos eine Verbindung herstellen.

Der Vollständigkeit halber habe ich versucht, Datensätze aus der Datenbank von einer Rails-Konsole abzurufen:

development (main):0 > a = MyModel.find 73694
PG::ConnectionBad: 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"?
Ruy Diaz
quelle
3

Es sieht so aus, als ob Ihr psql nicht läuft. Sie sollten es ausführen, bevor Sie eine Verbindung herstellen. Sie können dies nur mit Postgres.app für Mac OS tun. (Laden Sie diese App herunter und installieren Sie sie unter http://postgresapp.com. ) Öffnen Sie die App, und Sie haben einen PostgreSQL-Server bereit, der auf neue Verbindungen wartet. Schließen Sie die App und der Server wird heruntergefahren. Sie finden diese Informationen auch hier http://www.postgresql.org/download/macosx/ . Hoffe das wird dir helfen.

Lisyk
quelle
1
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert.
Kmeixner
Die Frage bezog sich speziell auf eine Homebrew-Installation und nicht auf eine Postgres.app-Installation. Diese Antwort ist zwar hilfreich, beantwortet die Frage jedoch nicht. Es wäre, als würde man sagen "Verwenden Sie stattdessen MySQL."
Brian Lieber
3

Da ein vorheriger Server noch läuft, versuchen Sie, alles herunterzufahren und Ihre Anwendung erneut auszuführen.

Kamara Jōb
quelle
3

Für diejenigen, die diesen Befehl verwenden und nicht funktionieren oder die Datei nicht vorhanden ist und Ruby on Rails verwendet

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

Oder irgendein anderer Befehl und scheitern Sie einfach weiter.

Ich habe dieses Problem bei der Deinstallation mit Brew gelöst. Ich musste 2 Mal mit Brew deinstallieren, da bei der ersten Deinstallation eine andere Version von postgresql übrig bleibt. Bei der zweiten Deinstallation wird der Vorgang abgeschlossen.

Installieren Sie postgresql mit Brew

Löschen, erstellen und migrieren Sie dann die Datenbanken des Projekts

(Vergessen Sie nicht, den Postgresql-Server zu starten.)

Esteban Echeverry
quelle
3

Ich habe das gleiche Problem, weil ich im Code einen falschen Postgres-Benutzernamen verwende. Ich habe mich bei postgres angemeldet psql -d postgresund eingegeben \du, um den Rollennamen zu übernehmen und den Benutzernamen von Postgres zu korrigieren.

Wenn Sie also mit diesem Problem konfrontiert sind, müssen Sie sicherstellen, dass Sie den richtigen Postgres-Benutzernamen, das richtige Passwort, den richtigen Hostnamen und die richtige Datenbank verwenden ...

Hoffe das wird jedem helfen

Brilliant-DucN
quelle
3

¿Haben Sie kürzlich die pg_hba.conf geändert? Wenn Sie nur nach Tippfehlern gesucht haben:

"local" gilt nur für Unix-Domain-Socket-Verbindungen

lokal alle alle Passwort

Lokale IPv4-Verbindungen:

Host alle alle 127.0.0.1/32 Passwort

Lokale IPv6-Verbindungen:

host all all :: 1/128 Passwort

Manchmal kann uns ein einfacher Fehler Kopfschmerzen bereiten. Ich hoffe diese Hilfe und entschuldige mich, wenn mein Englisch überhaupt nicht gut ist.

Sergio Zapata
quelle
3

Dies geschieht, wenn der Postgres-Server nicht ausgeführt wird. Schritte zur ordnungsgemäßen Installation von Postgres über Homebrew auf dem MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Dadurch wird postgres so initialisiert, dass das angegebene Verzeichnis als Datenbankverzeichnis verwendet wird. Normalerweise wird nicht empfohlen, das Benutzerverzeichnis für die Datenbankspeicherung zu verwenden. Bearbeiten Sie die sudoers-Datei, um initdb und ähnliche Befehle hinzuzufügen, und führen Sie dann initdb unter / usr / local / var / postgres aus.]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Nachdem Sie mit Schritt 2 erfolgreich waren, werden Sie aufgefordert, Schritt 3 auszuführen. Dieser Befehl startet den Server manuell.]

Souvik Das
quelle
2

Ich habe den gleichen Fehler. Es stellte sich heraus, dass Postgres überhaupt nicht lief (es läuft normalerweise immer im Hintergrund, aber aus irgendeinem Grund war es nicht heute).

Wenn dies der Fall ist, geben Sie einfach postgresdie Befehlszeile Ihres Projektverzeichnisses ein

Benjamin Dunphy
quelle
2

Nach einer enormen Menge an Hin und Her kam es wirklich auf die pgEdelsteinversion an, die ich benutzte. Bei Außenseitern würde die pgVersion 0.15.1keine Verbindung zu Port 5432 herstellen, aber die Version 0.17.1funktioniert einwandfrei - sehr seltsam.

Anthony
quelle