Comme certains autres, je reçois cette erreur lorsque j'exécute rake db: migrate dans mon projet ou même que j'essaie la plupart des tâches de base de données pour mes applications Ruby on Rails 3.2.
PGError (impossible de se connecter au serveur: aucun fichier ni répertoire de ce type. Le serveur Ne s'exécute-il que localement et accepte-t-il les connexions sur le socket du domaine Unix "/Tmp/.s.PGSQL.5432"?
J'ai installé PostgreSQL avec Homebrew il y a longtemps et suite à une tentative d'installation de MongoDB récemment, mon installation PostgreSQL n'a jamais été la même. J'utilise OS X 10.6 Snow Leopard.
Qu'est-ce qui ne va pas et comment puis-je mieux comprendre comment PostgreSQL est et devrait être installé sur mon Mac?
Jusqu'ici (je pense) cela me dit que PostgreSQL n'est pas en cours d'exécution (?).
ps -aef|grep postgres (Ruby-1.9.2-p320@jct-ana) (develop) ✗
501 17604 11329 0 0:00.00 ttys001 0:00.00 grep postgres
Mais est-ce que cela me dit que PostgreSQL est en cours d'exécution?
✪ launchctl load -w /usr/local/Cellar/postgresql/9.1.4/homebrew.mxcl.postgresql.plist (Ruby-1.9.2-p136)
homebrew.mxcl.postgresql: Already loaded
Comment puis-je réparer ça? qu'est-ce que je ne vois pas?
PS: ~/Library/LaunchAgents
inclut deux fichiers .plist PostgreSQL. Je ne suis pas sûr que ce soit pertinent.
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist
J'ai essayé le suivant et obtenu un résultat comme ci-dessous.
$ psql -p 5432 -h localhost
psql: could not connect to server: Connection refused
Is the server running on Host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on Host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on Host "localhost" (fe80::1) and accepting
TCP/IP connections on port 5432?
J'ai lu depuis que cela se produisait car OS X installe sa propre version de PostgreSQL et Homebrew installe une version différente à un endroit différent et que les commandes de PostgreSQL regardent dans le répertoire/tmp /. Vous aurez besoin de chercher plus sur le dépassement de pile, mais en gros, vous devez créer un lien symbolique avec PostgreSQL afin que tout ce qui regarde dans ce chemin tmp trouve le vrai chemin, si cela a du sens.
C’est le lien sur lequel j’ai trouvé quelques tâches supplémentaires à essayer, notamment le lien symbolique décrit ci-dessus, Mac OSX Lion Postgres n’accepte pas les connexions sur /tmp/.s.PGSQL.5432 . J'aimerais quand même que quelqu'un rassemble une explication décente des concepts sous-jacents à l'installation de PostgreSQL sur OS X et explique pourquoi c'est si difficile.
Dernières informations pour vous aider avec le dépannage:
$ which psql // This tells you which PostgreSQL you are using when you run $ psql.
Puis lancez:
$ echo $PATH
L'essentiel à prendre en compte est le suivant:
Assurez-vous que l'entrée du chemin de la copie de PostgreSQL que vous voulez exécuter arrive AVANT LE chemin d'accès à PostgreSQL du système OS X.
Il s’agit d’une exigence fondamentale qui détermine le type de PostgreSQL à exécuter et c’est ce qui m’explique qui est à l’origine de la plupart de ces problèmes.
Vérifiez qu'il n'y a pas postmaster.pid dans votre répertoire postgres, probablement /usr/local/var/postgres/
supprimez-le et démarrez le serveur.
Vérifiez - https://github.com/mperham/lunchy est un excellent wrapper pour launchctl.
UPDATE: ICI IS UN MEILLEUR FIX SI VOUS SOIS SUR OSX ...
Ancienne réponse:
Voici le correctif, plus d'infos ici:
https://github.com/mxcl/homebrew/issues/5004
Tout d’abord, arrêtez la base de données, puis
Pour moi, ça marche
rm /usr/local/var/postgres/postmaster.pid
Pour l'erreur ci-dessus que vous avez mentionnée, cela fonctionne pour moi.
1) éventuellement, modifiez votre port par défaut non spécifié dans le fichier postgres.conf, Si vous avez mentionné autre que le port par défaut n ° 5432 lors de l'installation.
(OU)
2) Modifiez le numéro de port dans le fichier postgresql.conf et redémarrez le serveur de base de données.
(OU)
3) au lieu de psql, tapez une commande complète comme
"psql -p 5432 -h localhost"
Si vous utilisez Homebrew, désinstallez Postgresql end pg gems: *
$ gem uninstall pg
$ brew uninstall postgresql
Téléchargez et exécutez le script suivant pour corriger l'autorisation sur/usr/local: *https://Gist.github.com/rpavlik/768518
$ Ruby fix_homebrew.rb
Ensuite, réinstallez Postgres et pg gem: *
$ brew install postgresql
$ initdb /usr/local/var/postgres -E utf8
Pour que launchd lance postgresql au moment de la connexion, exécutez:
$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
Ou démarrez manuellement.
Installer pg gem
$ gem install pg
J'espère avoir aidé
J'ai eu ce problème lorsque j'ai mis à niveau Postgres vers 9.3.x. La solution rapide pour moi consistait à rétrograder à la version 9.2.x que j'avais auparavant (inutile d'installer une nouvelle).
$ ls /usr/local/Cellar/postgresql/
9.2.4
9.3.2
$ brew switch postgresql 9.2.4
$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
<open a new Terminal tab or window to reload>
$ psql
Cette réponse offre une explication beaucoup plus complète ainsi que d'autres moyens de résoudre le problème.
Donc, pour beaucoup de problèmes ici, il semble que les gens utilisaient déjà psql et ont dû supprimer postmaster.pid
. Cependant, je n'avais pas ce problème car je n'avais même jamais installé correctement Postgres dans mon système.
Voici une solution qui a fonctionné pour moi dans MAC OSX Yosemite
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
J'espère que cela t'aides! Toodles!
Aussi, cette réponse m'a aidé le plus: https://stackoverflow.com/a/21503349/3173748
Lorsque vous exécutez. Par conséquent, même si pgadmin et d'autres clients peuvent fonctionner, psql ne le fera pas.
Vous devez modifier le fichier postgresql.conf et les fichiers pg_hba.conf afin d'autoriser la connexion sur un socket réel. Cela permettra également la connexion depuis une adresse IP distante, raison pour laquelle elle est désactivée par défaut.
Ces fichiers sont dans le répertoire de données mais l'emplacement réel peut être différent en fonction de l'installation de postgres. Avec postgres en cours d'exécution, exécutez la commande suivante:
ps -ef | grep postmaster
Ces deux fichiers sont le répertoire -D (peut-être/usr/local/pgsql/data).
Pour le fichier postgresql.conf, décommentez le listen_address et changez le en:
listen_address = '*'
Pour le pg_hba.conf, ajoutez la ligne:
Host all all 0.0.0.0/0 md5
Je ne connais pas vraiment Mac ou Homebrew, mais je connais très bien PostgreSQL.
Vous voulez savoir où sont les journaux de PostgreSQL essayant de démarrer et quel est le répertoire de socket pour PostgreSQL. Par défaut, lorsque vous générez PG, le répertoire du socket est/tmp /. Si vous n'avez pas changé cela lors de la création de PG, puis de celui-ci, vous devriez pouvoir voir un fichier de socket dans/tmp si vous le faites: ls -al/tmp
Le fichier de socket commence par un ".", Vous ne le verrez donc pas avec le '-a' à ls.
Si vous ne voyez pas de socket ici et que vous ne voyez rien de ps awux | grep postgres, alors PG n’est probablement pas en cours d’exécution, ou peut-être est-il un logiciel installé sur OSX. Il se peut que vous rencontriez un conflit lors de l'écoute sur le port 5432 sur localhost. Utilisez netstat -anp pour savoir ce qui est éventuellement écouté sur 5432. Si un PG Mac OSX est déjà en train d'écouter sur ce port être le problème.
J'espère que cela pourra aider. J'ai entendu dire que l'homebrew pouvait rendre les choses un peu laides et beaucoup de personnes à qui j'ai parlé ont encouragé l'utilisation d'un VM à la place.
Bonjour le monde :)
La meilleure façon, mais étrange pour moi était de faire les choses suivantes.
1) Télécharger postgres93.app ou une autre version. Ajoutez cette application dans le dossier/Applications /.
2) Ajoutez une ligne (commande) dans le fichier .bash_profile
(qui se trouve dans mon répertoire personnel):
export PATH =/Applications/Postgres93.app/Contenu/MacOS/bin /: $ PATHC'est un PATH pour
psql
à partir de Postgres93.app
. La ligne (commande) s'exécute à chaque démarrage de la console.3) Lancez Postgres93.app
à partir du dossier /Applications/
. Il démarre un serveur local (le port est "5432" et l'hôte est "localhost").
4) Après toutes ces manipulations, j’ai été heureux d’exécuter $ createuser -SRDP user_name
et d’autres commandes et de voir que cela fonctionnait! Postgres93.app
peut être exécuté pour s'exécuter à chaque démarrage de votre système.
5) Aussi, si vous voulez voir vos bases de données graphiquement, vous devez installer PG Commander.app
. C'est un bon moyen de voir votre base de données postgres sous forme de jolies tables de données
Bien sûr, cela n’est utile que pour le serveur local. Je serai heureux si ces instructions aident les autres qui ont fait face à ce problème.
La cause
Lion est livré avec une version de postgres déjà installée et utilise ces fichiers binaires par défaut. En général, vous pouvez contourner ce problème en utilisant le chemin d'accès complet aux fichiers binaires homebrew postgres, mais il peut toujours y avoir 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/
J'avais PostgreSQL 9.3 et j'ai eu la même erreur,
Connexion au serveur impossible: connexion refusée Le serveur est-il en cours d'exécution sur l'hôte "localhost" (127.0.0.1) et en acceptant les connexions TCP/IP sur port 5432?
J'ai corrigé ceci en utilisant:
chmod 777 /var/lib/pgsql/9.3/data/pg_hba.conf
service postgresql-9.3 restart
Ça marche pour moi.
pour ce que ça vaut, j'ai rencontré la même erreur quand j'avais une faute de frappe (md4
au lieu de md5
) dans mon fichier pg_hba.conf
(/etc/postgresql/9.5/main/pg_hba.conf
)
Si vous êtes arrivé comme je l'ai fait, revérifiez ce fichier une fois pour vous assurer qu'il ne contient rien de ridicule.
J'ai corrigé cela en mettant à niveau postgres.
brew update
brew upgrade
Ensuite, je devais également mettre à niveau les bases de données pour être compatible avec la nouvelle version majeure, car j'avais mis à niveau de 10 à 11.
brew postgresql-upgrade-database
(source https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )
Cette erreur s’explique par le fait que votre base de données postgres locale s’arrête lorsque vous redémarrez votre ordinateur. Dans une nouvelle fenêtre de terminal, tapez simplement:
$psql -h localhost
pour redémarrer le serveur.
Si vous utilisez MacOS et que vous utilisez homebrew, j'ai trouvé cette réponse extrêmement utile:
https://stackoverflow.com/a/27708774/4062901
Pour moi, mon serveur fonctionnait mais à cause d'une mise à niveau, j'avais des problèmes de connexion (note: j'utilise les services d'infusion). Si Postgres est en cours d'exécution, essayez cat /usr/local/var/postgres/server.log
et voyez ce que disent les journaux. Mon erreur était une migration, pas un problème de connexion.
De plus, après la migration manuelle proposée (ce qui fonctionne mais), j'ai constaté qu'il n'y avait plus de table pour mon utilisateur. Essayez cette commande pour corriger cela: createdb
(avec psql: FATAL: la base de données "<utilisateur>" n’existe pas )
Une des raisons pourrait être que
unix_socket_directories dans le fichier postgresql.conf ne figure pas dans le répertoire recherché.
Dans l'exemple de question, il recherche le répertoire/tmp, il doit être fourni dans le fichier postgresql.conf.
quelque chose comme ça:
unix_socket_directories = '/var/run/postgresql,/tmp' # comma-separated list of directories
Cette solution a fonctionné pour moi.
L'exécution locale de PostgreSQL peut poser différents problèmes. Je recommanderais de nettoyer toutes les versions de postgres installées et de recommencer à zéro. Une fois que vous l'avez installé, il est très facile de recréer votre base de données si vous avez votre projet Rails avec le db/schema.rb
à jour __
Voici comment j’ai l'habitude d'installer PostgreSQL sur un Mac . Si vous exécutez votre base de données sous l'utilisateur root localement, vous pouvez omettre la dernière étape qui crée un utilisateur todo
.
Redémarrez simplement Postgres dès l'apparition de l'erreur en exécutant brew services restart postgresql
, puis réessayez.