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 $ psql
keine Fehlermeldung angezeigt .
Aber ich laufe rake db:migrate
in 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
quelle
brew postgresql-upgrade-database
Antworten:
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.
quelle
rm: /usr/local/var/postgres/postmaster.pid: No such file or directory
tail /usr/local/var/postgres/server.log
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 utf8
meine 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.quelle
postgres -D /usr/local/var/postgres
angezeigt 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 Threadpg_ctl -D /usr/local/var/postgres -l logfile start
und dann startete mein Server im Hintergrundbrew services start postgres
unter OSX, um Postgres im Hintergrund zu starten, anstattpostgres -D /usr/local/var/postgres
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:
quelle
Wenn die Installation und Deinstallation von Postgres mit Brew für Sie nicht funktioniert, lesen Sie die Protokolle Ihrer Postgresql-Installation oder:
Wenn Sie diese Art der Ausgabe sehen:
Versuchen Sie dann Folgendes:
Starten Sie dann den Server:
Quelle
quelle
Wenn die PID-Datei unter Yosemite den Start von Postgres blockiert und ein
launchctl
Daemon versucht (und fehlschlägt), die Datenbank-Daemons zu laden, müssen Sie die plist-Datei entladen:Entfernen Sie dann die PID-Datei
Laden Sie dann den
launchctl
Daemon neuquelle
Für alle, die dies lesen und Postgres.app verwenden, benötigen Sie möglicherweise
host: localhost
in Ihrer database.yml. http://postgresapp.com/documentation#toc_3quelle
Das Aktualisieren der Datenbank funktioniert bei mir
brew postgresql-upgrade-database
quelle
hat für mich gearbeitet!
quelle
Überprüfen Sie, ob die Socket-Datei vorhanden ist.
Wenn dies nicht der Fall ist, überprüfen Sie Ihre postgresql.conf auf Änderungen an unix_socket_directory.
quelle
$ 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
$ 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ösungDas 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:
quelle
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
Dann habe ich die Postgres-Dienste neu initialisiert
Das hat bei mir funktioniert.
quelle
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 pg
und dannbundle
(odergem 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.
quelle
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
Aktualisieren Sie die Datenbanken:
Archivieren Sie die alten Datenbanken:
Starten Sie postgres neu:
Aktualisierte Edelsteine (für Schienen / aktive Aufzeichnung):
quelle
Der narrensicherste Weg, dies zu umgehen, ist zu tun
Dadurch bleiben Ihre Benutzerberechtigungen usw. erhalten und alles wird auf neu zurückgesetzt. Funktioniert die ganze Zeit!
quelle
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
zum Beispiel:
dann mach
zum Beispiel
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 !!!
quelle
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.
Führen Sie psql mit der Option -host aus
Sie müssen keinen Softlink erstellen
quelle
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
quelle
Wenn postgres mit homebrew installiert wurde, können Sie dies beheben, indem Sie Folgendes ausführen:
quelle
Dies funktionierte für mich (als Mischung aus früheren Antworten):
Quelle: https://coderwall.com/p/zf-fww/postgres-on-osx-with-homebrew-not-running-after-osx-crash
quelle
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:
Mit dem obigen Befehl sollten Sie postgres starten
quelle
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:
rails server
,rails console
,guard
usw ...brew info postgres
quelle
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:
quelle
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.
quelle
Da ein vorheriger Server noch läuft, versuchen Sie, alles herunterzufahren und Ihre Anwendung erneut auszuführen.
quelle
Für diejenigen, die diesen Befehl verwenden und nicht funktionieren oder die Datei nicht vorhanden ist und Ruby on Rails verwendet
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.)
quelle
Ich habe das gleiche Problem, weil ich im Code einen falschen Postgres-Benutzernamen verwende. Ich habe mich bei postgres angemeldet
psql -d postgres
und 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
quelle
¿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.
quelle
Dies geschieht, wenn der Postgres-Server nicht ausgeführt wird. Schritte zur ordnungsgemäßen Installation von Postgres über Homebrew auf dem MAC:
brew install postgres
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.]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.]quelle
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
postgres
die Befehlszeile Ihres Projektverzeichnisses einquelle
Nach einer enormen Menge an Hin und Her kam es wirklich auf die
pg
Edelsteinversion an, die ich benutzte. Bei Außenseitern würde diepg
Version0.15.1
keine Verbindung zu Port 5432 herstellen, aber die Version0.17.1
funktioniert einwandfrei - sehr seltsam.quelle