wake-up-neo.com

Postgresql-Adapter (pg): Verbindung zum Server konnte nicht hergestellt werden

Jeder erhalte ich diesen Fehler das ich meine Rails-Anwendung laufen (It kann keine Verbindung zu meinem lokalen Postgresql )

/Users/leonardo/.rvm/gems/Ruby-1.9.3-p362/gems/activerecord-3.2.11/lib/
active_record/connection_adapters/postgresql_adapter.rb:1208:in `initialize': 
could not connect to server: No such file or directory (PG::Error)
   Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

Ich verwende Postgres.app , dass es richtig läuft.

Wenn ich renne

$ psql

Ich kann richtig Postgresql Konsole anmelden.

$ which psql
 /Applications/Postgres.app/Contents/MacOS/bin/psql

Gemfile

source 'https://rubygems.org'
Ruby "1.9.3"

gem 'Rails', '3.2.11'
gem "pg"

database.yml

development:
  adapter: postgresql
  encoding: unicode
  username: leonardo
  password: 
  database: zapping
  port: 5432  

Postgresql (Konsole)

$ psql
leonardo=# \l

enter image description here

57
sparkle

Versuchen Sie, Host: localhost zu Ihrer Datenbank.yml hinzuzufügen. (Basierend auf: https://stackoverflow.com/a/10793186/919641 )

122
pjam

Ihr Pg gem wurde mit der in Mac OS X vorinstallierten PostgreSQL-Bibliothek libpq kompiliert, und Sie verwenden die psql, die Sie in einer neueren Version installiert haben, oder umgekehrt.

Sie können dieses Problem umgehen, indem Sie eine TCP/IP-Verbindung angeben, indem Sie localhost zu database.yml hinzufügen. Es ist jedoch besser, die Pg-Datei mit der libpq für den Server zu kompilieren, den Sie tatsächlich ausführen. Dazu sollten Sie in der Lage sein, die Umgebungsvariable PATH vor der Kompilierung auf den Ordner mit dem korrekten pg_config zu setzen. In Ihrem Fall ist dies irgendwo in Postgres.app.

23
Craig Ringer

Wenn es auch nach dem Hinzufügen von Host: localhost nicht funktioniert, entfernen Sie den postmaster.pid 

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

21

sie sollten Host: localhost zu Ihrer DB-Konfig hinzufügen ...

10

Ich hatte das gleiche Problem auf einem Mac. Es stellte sich heraus, dass der PSQL, den ich auf meinem Pfad hatte, nicht richtig funktioniert hat. .__ Starten Sie psql, indem Sie Folgendes eingeben:

~/projects/some_project/project-Rails$ psql
  psql: 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"?

Wenn Sie dies sehen, bedeutet dies, dass die Binärdatei von psql in Ihrem Pfad versucht, eine Verbindung über Socket herzustellen, und dies ist (aus welchem ​​Grund auch immer) nicht möglich. Da ich bereits pgadmin heruntergeladen hatte und die Verbindung gut war, wusste ich, dass es mit dem Server kein Problem war. 

Fixiert durch Hinzufügen der richtigen Version von pgsql zu meinem PFAD:

export PATH=/Applications/Postgres.app/Contents/MacOS/bin:$PATH

Jetzt sind Psql (und Rails) glücklich!

6
paneer_tikka

Ich hatte das gleiche Problem. Sie müssen tatsächlich Postgres starten/starten. Postgres muss vor kurzem nicht mehr auf meinem Computer ausgeführt werden. Daher musste ich sicherstellen, dass der Postgres-Server gestartet wird

postgres -D /usr/local/var/postgres

Dann haben die folgenden Befehle (die mir den gleichen Fehler verursacht haben) alle funktioniert:

bundle exec rake db:create db:migrate
bundle exec rspec
6
L. Stepanek

Da dies der erste Beitrag war, der in meinem Suchergebnis angezeigt wurde, habe ich mich entschlossen, den aktualisierten Fix dafür zu veröffentlichen. Da keiner der oben genannten Vorschläge für mich funktioniert hat. 

brew postgresql-upgrade-database

Es aktualisiert Postgresql-Daten und verschob meine alte Version. Ich war auf 9,6 statt 10,4

Die Lösung gefunden hier

5
Mr. Rene

Ich hatte dieses Problem. Einer der Kommentare hier half mir, das Problem zu beheben.

Danke, diese Antwort hat mir geholfen, das Problem zu beheben. Die Schritte, die ich unternahm, waren einfach: 1) gem uninstall pg, 2) bundle install, fertig. - haslo 3. Dezember 13 um 20:27

gem uninstall pg
bundle install
4
Jared Menard

find/-name 'postgresql.conf'

netstat -an | grep 5432 # => /tmp/.s.PGSQL.5432

vi/Benutzer/admin/Bibliothek/Anwendung\Support/Postgres93/var/postgresql.conf

FROM: unix_socket_directories = '/ tmp'

TO: unix_socket_directories = '/ var/pgsql_socket'

Sudo mkdir/var/pgsql_socket

Sudo chmod 777/var/pgsql_socket

4
the-teacher

Für Heroku ist dies alles, was Sie brauchen.

heroku addons:create heroku-postgresql

production:
 adapter: postgresql
 encoding: unicode
 Host: localhost
 # For details on connection pooling, see Rails configuration guide
 # http://guides.rubyonrails.org/configuring.html#database-pooling
 pool: 5
2
jmontross

Mein Problem war, dass sich die /etc/hosts-Datei geändert hat und diesen wichtigen Eintrag nicht hatte: 127.0.0.1 localhost

0
dani24

Ich hatte gerade das Problem, dass die Postgres-App nicht auf meinem Mac lief ...

0
Yoko

Auf Mac hatte ich verschiedene Versionen von Postgresql. Dieses Problem wurde gelöst, als ich brew switch postgresql 9.5.5 ausprobierte (ich glaube nicht, dass die Versionsnummer an dieser Stelle wichtig ist) 

$ brew switch postgresql 9.5.5
Cleaning /usr/local/Cellar/postgresql/9.6.1
Cleaning /usr/local/Cellar/postgresql/9.6.5
Cleaning /usr/local/Cellar/postgresql/10.2
Cleaning /usr/local/Cellar/postgresql/10.3
Cleaning /usr/local/Cellar/postgresql/9.5.5
Cleaning /usr/local/Cellar/postgresql/9.5.4

Alle Daten werden übrigens gelöscht. Ich denke, es gibt einen Brew-Befehl, um dies zu tun, ohne die Version zu wechseln, die ich nicht finden konnte.

0
kangkyu

Ich hatte das gleiche Problem auf OS High Sierra 10.13 .__ Ich folgte den Anweisungen dieser Website, die ich Version 10.4 heruntergeladen habe Ref: https://postgresapp.com/

Dann fügte ich dies dem bash-Profil hinzu: Export PATH = $ PATH: /Library/PostgreSQL/10.4/bin: $ PATH

terminal neu starten. 

Öffnen Sie das neue Fensterterminal, und geben Sie Folgendes ein: psql -U postgres

danach wird diese Meldung angezeigt: psql (10.4) Geben Sie "help" ein, um Hilfe zu erhalten.

postgres = # 

0
Jaime A