[macos] Postgres n'a pas pu se connecter au serveur



14 Answers

Cela peut parfois être un problème avec une mise à niveau postgres.

Dans mon cas, c'est arrivé lors de la mise à niveau de 9.3 à 9.4.

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

OS X / Homebrew:

Essayez d'exécuter postgres -D /usr/local/var/postgres - cela vous donnera une sortie beaucoup plus verbeuse si postgres ne démarre pas.

Dans mon cas, l'exécution de rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8 supprimé mes anciennes bases de données, puis a réinitialisé le schéma db postgres.

Merci à https://github.com/Homebrew/homebrew/issues/35240 pour cette solution.

Après avoir régénéré mes bases de données (avec rake db:create ), tout a bien fonctionné.

Question

Après avoir fait une mise à jour de l'infusion et de l'infusion, mon postgres a eu un problème. J'ai essayé de désinstaller postgres et installer encore, mais cela n'a pas fonctionné aussi bien.

C'est le message d'erreur. (J'ai aussi reçu ce message d'erreur quand j'essaye de faire rake db: migrate)

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

Comment puis-je le résoudre?

Version Mac: Lion de montagne.

Version homebrew: 0.9.3

Version postgres: psql (PostgreSQL) 9.2.1

Et c'est ce que j'ai fait.

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

Maintenant, après avoir réinstallé howbrew, quand j'utilise $ psql , il ne montre aucun message d'erreur.

Mais je lance rake db:migrate dans mon application rails, il montre:

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}

Enfin, je trouve la solution.

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

Cette solution est peu compliquée, mais cela fonctionne. J'espère que quelqu'un a une meilleure solution

Mettre à jour

Cela fonctionne pour moi aussi.

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



La cause

Lion vient avec une version de postgres déjà installée et utilise ces binaires par défaut. En général, vous pouvez contourner ce problème en utilisant le chemin d'accès complet aux binaires postgres homebrew, mais il peut y avoir encore des problèmes avec d'autres programmes.

La solution

curl http://nextmarvel.net/blog/downloads/fixBrewLionPostgres.sh | sh

Via

http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/




Mettre à jour la base de données fonctionne pour moi

brew postgresql-upgrade-database




Pour ceux qui utilisent cette commande et ne fonctionne pas ou le fichier n'est pas là et utilisent Ruby on Rails

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

Ou toute autre commande et continuez simplement à échouer.

J'ai résolu ce problème de désinstallation avec Brew. J'ai dû désinstaller 2 fois, car à la première désinstallation il restera une autre version de postgresql, avec la deuxième désinstallation, le processus sera terminé.

Installez postgresql avec Brew

Ensuite, supprimez, créez et migrez les bases de données du projet

(N'oubliez pas de démarrer le serveur postgresql)




J'ai rencontré ce problème après avoir essayé de restaurer / supprimer / créer une base de données alors que d'autres processus y accédaient. Le correctif MacOSX / Homebrew était:

  1. fermer tous les autres processus d'accès rails server , rails console , guard , etc ...
  2. charger / décharger en utilisant les commandes trouvées dans brew info postgres
  3. exécuter restaurer / supprimer / créer d'avant



Pour moi, c'était une mise à niveau apache qui a causé le problème. Je pourrais toujours lancer psql dans la console ou appeler db directement à partir de kdevelop. Il a également travaillé pour ajouter "host = localhost" à la chaîne de connexion.

MAIS le vrai problème était que apache avait changé en tmp privé.

Solution: Mettez à jour /usr/lib/systemd/system/apache2.service et remplacez PrivateTmp = true par PrivateTmp = false.

Je travaille sur OpenSuse OS, mais je suppose que quelque chose de similaire pourrait arriver sur Mac.




Avez-vous récemment changé le fichier pg_hba.conf? si vous avez juste vérifié la présence d'une faute de frappe:

"local" est uniquement pour les connexions de socket de domaine Unix

local tout mot de passe

Connexions locales IPv4:

héberger tous tous les mot de passe 127.0.0.1/32

Connexions locales IPv6:

hôte tous tous :: 1/128 mot de passe

Parfois, une simple erreur peut nous donner un mal de tête. J'espère que cette aide et désolé si mon anglais n'est pas bon du tout.




Après une énorme quantité de va-et-vient, c'est vraiment la version pg gem que j'utilisais. Sur mavericks, pg version 0.15.1 ne se connecterait pas au port 5432 mais la version 0.17.1 fonctionne très bien - très bizarre.




brew services start postgres 

travaillé pour moi!




J'ai utilisé la pile Bitnami et installé en tant qu'utilisateur non-root psql. En utilisant psql j'ai reçu l'erreur mentionnée.

Il s'avère qu'il y a 2 versions de psql

  1. un niveau racine psql préemballé dans la distribution linux. Cela pointe vers / usr / bin / psql
  2. un psql de niveau non racine installé par la pile Bitnami. Cela pointe vers / bitnami / postgresql / postgresql / bin / psql

Vous pourriez vouloir changer l'alias de psql, de sorte qu'il pointe vers l'utilisateur non-root.

alias psql='/bitnami/postgresql/postgresql/bin/psql'

Ce qui précède a fonctionné pour moi en faisant psql -U postgres




Si l'installation et la désinstallation de postgres avec brassage ne fonctionnent pas pour vous, consultez les journaux de votre installation postgresql ou:

postgres -D /usr/local/var/postgres

si vous voyez ce genre de sortie:

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.

Ensuite, essayez ce qui suit:

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

Puis démarrez le serveur:

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

Source




FWIW cela m'est arrivé aujourd'hui, mais ce qui s'est passé, c'est que j'exécutais des mises à jour d'Ubuntu à ce moment-là, qui mettaient probablement à jour Postgres. Une fois la mise à jour terminée, j'ai pu me connecter sans accroc.

Par souci d'exhaustivité, j'essayais de récupérer des enregistrements de la base de données à partir d'une console Rails:

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



Le moyen le plus idiot autour de cela est de faire

brew reinstall postgresql

Cela gardera votre permission d'utilisateur, etc. tout est intact et tout est réinitialisé à nouveau. Fonctionne tout le temps!




Changer les paramètres de configuration postresql ou database.yml, changer $ PATH, ou créer des liens symboliques étaient tous inutiles pour moi. Tout ce que je devais faire était gem uninstall pg et bundle (ou gem install pg ).

Le problème était que le pg gem avait été installé avant le homebrew postgres, donc il récupérait les paramètres de la version de postgres fournie avec MacOS. La réinstallation (et donc la reconstruction de l'extension native) a résolu le problème.




Sur Yosemite, si le fichier pid bloque le démarrage de Postgres et qu'un démon launchctl essaye (et échoue) de charger les démons de base de données, alors vous devrez décharger le fichier plist:

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

Ensuite, retirez le fichier pid

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

Puis rechargez le démon launchctl

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



Related