Comme d'autres, j'obtiens cette erreur lorsque j'exécute rake db: migrer dans mon projet ou même essayer 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 ou répertoire de ce type. Le serveur fonctionne-t-il localement et accepte-t-il les connexions sur le socket de 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 de PostgreSQL n'a jamais été la même. J'utilise OS X v10.6 Snow Leopard.
Quel est le problème et comment mieux comprendre comment PostgreSQL est et doit être configuré sur mon Mac?
Jusqu'à présent (je pense) cela me dit que PostgreSQL ne fonctionne pas (?).
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 cela me dit-il 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 sais pas si cela est pertinent.
org.postgresql.postgres.plist
homebrew.mxcl.postgresql.plist
J'ai essayé ce qui suit et j'ai obtenu le résultat ci-dessous.
$ psql -p 5432 -h hôte local
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 produit car OS X installe sa propre version de PostgreSQL et Homebrew installe une version différente dans un endroit différent et les commandes PostgreSQL recherchent dans le répertoire / tmp /. Vous aurez besoin de chercher plus sur Stack Overflow, mais fondamentalement, vous créez un lien symbolique avec PostgreSQL pour que tout ce qui regarde dans ce chemin tmp trouve réellement le chemin réel, si cela a du sens.
C'est le lien où j'ai trouvé quelques autres choses à essayer, en particulier en faisant le lien symbolique comme ci-dessus, Mac OSX Lion Postgres n'accepte pas les connexions sur /tmp/.s.PGSQL.5432 . Je souhaite toujours que quelqu'un mette en place une explication décente des concepts derrière l'installation de PostgreSQL sur OS X et pourquoi tout cela est si difficile.
Dernières informations pour aider au dépannage:
$ which psql // This tells you which PostgreSQL you are using when you run $ psql.
Puis exécutez:
$ echo $PATH
La chose clé à prendre en compte est la suivante:
Assurez-vous que l'entrée de chemin pour la copie de PostgreSQL que vous souhaitez exécuter VENEZ AVANT le chemin vers PostgreSQL du système OS X.
Il s'agit d'une exigence fondamentale qui décide quel PostgreSQL doit être exécuté et c'est ce que l'on me dit conduit à la plupart de ces problèmes.
la source
Réponses:
Vérifiez qu'il n'y a pas de 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.
la source
" Postgres.app " est une meilleure solution si vous êtes sous OS X
Voici la solution:
cd /var
rm -r pgsql_socket
ln -s /tmp pgsql_socket
chown _postgres:_postgres pgsql_socket
Plus d'informations sont disponibles sur " postgresql 9.0.3. Sur Lion Dev Preview 1 ".
la source
/tmp
à _postgres, mais bon :)Pour moi, cela fonctionne
la source
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
brew services restart postgresql
No such file or directory
dans mon casCela a fonctionné pour moi pour l'erreur que vous avez mentionnée. Faites l' une de ces choses:
Modifiez éventuellement votre port par défaut spécifié dans le
postgres.conf
fichier, si vous avez utilisé autre chose que le port par défaut5432
lors de l'installation.Modifiez le numéro de port
postgresql.conf
et redémarrez le serveur de base de données.Au lieu de
psql
taper la commande complète:la source
Si vous utilisez Homebrew, désinstallez Postgresql end pg gems: *
Téléchargez et exécutez le script suivant pour corriger l'autorisation sur / usr / local: * https://gist.github.com/rpavlik/768518
Puis réinstallez Postgres et pg gem: *
Pour que launchd démarre postgresql lors de la connexion:
Ou démarrez manuellement.
Installer pg gem
J'espère avoir aidé
la source
brew info postgres
:ARCHFLAGS="-arch x86_64" gem install pg
initdb /usr/local/var/postgres -E utf8
travaux. Merci beaucoup.J'ai eu ce problème lorsque j'ai mis à niveau Postgres vers 9.3.x. La solution rapide pour moi était de revenir à la version 9.2.x que j'avais auparavant (pas besoin d'en installer une nouvelle).
" Homebrew installer une version spécifique de la formule? " Offre une explication beaucoup plus complète ainsi que des moyens alternatifs pour résoudre le problème.
la source
J'ai corrigé ce problème en mettant à jour postgres.
Ensuite, j'ai dû également mettre à niveau les bases de données pour être compatibles avec la nouvelle version majeure, car je suis passé de 10 à 11.
(source https://github.com/facebook/react-native/issues/18760#issuecomment-410533581 )
la source
Donc, pour beaucoup de problèmes ici, il semble que les gens exécutaient déjà psql et ont dû le supprimer
postmaster.pid
. Cependant, je n'ai pas eu 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 sous MAC OSX Yosemite
export PATH=$PATH:/Applications/Postgres.app/Contents/Versions/latest/bin
J'espère que cela t'aides! Toodles!
De plus, cette réponse m'a le plus aidé: https://stackoverflow.com/a/21503349/3173748
la source
Lorsque vous exécutez: psql -p 5432 -h localhost, il n'utilise pas le pilote de bouclage mais utilise une vraie socket et vous devez donc configurer postgres pour accepter les connexions de socket. Par conséquent, même si pgadmin et d'autres clients peuvent fonctionner, psql ne le sera pas.
Vous devez modifier à la fois le fichier postgresql.conf et les fichiers pg_hba.conf afin de permettre la connexion sur une vraie socket. Cela permettra également la connexion à partir d'une adresse IP distante, raison pour laquelle elle est désactivée par défaut.
Ces fichiers se trouvent dans le répertoire data mais l'emplacement réel peut être différent selon la manière dont postgres a été installé. Avec postgres en cours d'exécution, exécutez la commande:
Ces deux fichiers sont le répertoire -D (peut-être / usr / local / pgsql / data).
Pour le fichier postgresql.conf, supprimez le commentaire de listen_address et changez-le en:
Pour le pg_hba.conf, ajoutez la ligne:
la source
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 socket pour PostgreSQL. Par défaut, lorsque vous construisez PG, le répertoire socket est / tmp /. Si vous ne l'avez pas changé lorsque vous avez construit PG puis que vous avez démarré PG, vous devriez pouvoir voir un fichier socket dans / tmp si vous faites: ls -al / tmp
Le fichier socket commence par un ".", Donc vous ne le verrez pas avec les '-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 l'est-il et c'est celui installé par OSX. Il se peut que vous ayez un conflit en écoutant sur le port 5432 sur l'hôte local - utilisez netstat -anp pour voir ce qui, le cas échéant, écoute sur 5432. Si un PG Mac OSX écoute déjà sur ce port, cela pourrait être le problème.
J'espère que cela pourra aider. J'ai entendu dire que l'homebrew peut rendre les choses un peu moche et beaucoup de gens à qui j'ai parlé encouragent à utiliser une VM à la place.
la source
J'ai rencontré cette erreur lors de l'exécution sur Mac 10.15.5 en utilisant homebrew.
Il existe un fichier appelé postmaster.pid qui devrait être automatiquement supprimé à la fermeture de postresql.
Si cela ne fait pas ce qui suit
la source
La cause
Lion est livré avec une version de postgres déjà installée et utilise ces binaires par défaut. En général, vous pouvez contourner cela en utilisant le chemin complet des binaires homebrew postgres, mais il peut y avoir encore des problèmes avec d'autres programmes.
La solution
Via
http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/
la source
L'une des raisons pour lesquelles vous obtenez cette erreur est 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:
pour redémarrer le serveur.
la source
Bonjour tout le monde :)
La meilleure mais étrange façon pour moi était de faire les choses suivantes.
1) Téléchargez postgres93.app ou une autre version. Ajoutez cette application dans le dossier / Applications /.
2) Ajoutez une ligne (commande) dans le fichier
C'est un CHEMIN à.bash_profile
(qui se trouve dans mon répertoire personnel):psql
partir dePostgres93.app
. La ligne (commande) s'exécute à chaque démarrage de la console.3) Lancer à
Postgres93.app
partir du/Applications/
dossier. Il démarre un serveur local (le port est "5432" et l'hôte est "localhost").4) Après toutes ces manipulations, j'étais heureux d'exécuter
$ createuser -SRDP user_name
et d'autres commandes et de voir que cela fonctionnait!Postgres93.app
peut être fait 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 comme de jolies tables de donnéesBien sûr, cela n'est utile que pour le serveur local. Je serai heureux si ces instructions aident ceux qui ont été confrontés à ce problème.
la source
J'avais PostgreSQL 9.3 et j'ai eu la même erreur,
J'ai corrigé cela en utilisant:
Ça marche pour moi.
la source
pour ce que ça vaut, j'ai rencontré cette même erreur quand j'avais une faute de frappe (
md4
au lieu demd5
) dans monpg_hba.conf
fichier (/etc/postgresql/9.5/main/pg_hba.conf
)Si vous êtes arrivé ici comme moi, revérifiez ce fichier une fois pour vous assurer qu'il n'y a rien de ridicule là-dedans.
la source
pg_hba.conf
fichier?Il peut y avoir différents problèmes lors de l'exécution de PostgreSQL en local. 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 de rails avec la mise à jour
db/schema.rb
Voici comment j'installe habituellement PostgreSQL sur un Mac . Si vous exécutez votre base de données sous l'utilisateur root localement, vous souhaiterez peut-être omettre la dernière étape qui crée un
todo
utilisateurla source
L'une des raisons pourrait être que
unix_socket_directories dans le fichier postgresql.conf n'est pas répertorié avec le répertoire qu'il recherche.
Dans l'exemple de question, il recherche le répertoire / tmp, il doit être fourni dans le fichier postgresql.conf
quelque chose comme ça:
Cette solution a fonctionné pour moi.
la source
Si vous êtes sur 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 de brassage). Si Postgres est en cours d'exécution, essayez de
cat /usr/local/var/postgres/server.log
voir ce que disent les journaux. Mon erreur était une migration, pas un problème de connexion.Aussi après la migration manuelle qu'ils proposent (qui fonctionne mais) j'ai trouvé qu'il n'y avait plus de table pour mon utilisateur. Essayez cette commande pour résoudre ce problème:
createdb
(répondu via psql: FATAL: la base de données "<utilisateur>" n'existe pas )la source
Redémarrez simplement Postgres dès qu'une erreur apparaît en exécutant
brew services restart postgresql
puis réessayezla source
pour moi, la commande
rm /usr/local/var/postgres/postmaster.pid
n'a pas fonctionné car j'ai installé une version spécifique de postgresql avec homebrew.la bonne commande est
rm /usr/local/var/postgres@10/postmaster.pid
.alors
brew services restart postgresql@10
.la source
C'est très simple. Ajoutez l'hôte uniquement dans votre fichier database.yaml.
la source