2017-08-11 3 views
5

Lorsque j'essaie d'accéder à postgres via une application web, ou d'ouvrir le shell postgres avec psql -d template1, j'obtiens une erreur.Pourquoi ne puis-je pas accéder à postgres lors de son exécution en tant que service?

psql: Impossible de se connecter au serveur: Aucun fichier ou répertoire est le serveur fonctionnant localement et d'accepter les connexions sur le domaine Unix socket « /tmp/.s.PGSQL.5432 »?

(* J'ai lu un certain nombre de threads SO au sujet de cette erreur, mais les solutions recommandées ne fixent pas pour moi)

postgres Démarrer en tant que service:

brew services restart postgresql 

Arrêt postgresql ... (peut prendre un certain temps) ==> Arrêté avec succès postgresql (label: homebrew.mxcl.postgresql) ==> Étoile avec succès ted postgresql (label: homebrew.mxcl.postgresql)

exécuter manuellement postgres dans un terminal:

Je peux tout au travail en cours d'exécution ci-dessous dans une fenêtre de terminal, mais je préférerais courir en arrière-plan.

postgres -D /usr/local/var/postgres9.6.3 

Clusters:

J'ai 3 clusters db dans /usr/local/var, mais je voudrais utiliser postgres9.6.3/

postgres 
postgres9.5/ 
postgres9.6.3/ 

Quels:

which psql retours /usr/local/bin/psql

Chemin:

echo $PATH retours /usr/local/bin et /usr/local/var (ajouté)

Autres solutions recommandées:

Beaucoup de gens où en mesure de résoudre ce problème en supprimant un /postgres/postmaster.pid, mais le fichier n'existe pas pour moi.

MISE À JOUR

Exécution ps -ef | grep postgres, sorties seulement,

501 2135 1530 0 12:08pm ttys002 0:00.00 grep postgres 

Après avoir redémarré postgres avec brew servies, postgres.log à /usr/local/var/log contient,

FATAL: database files are incompatible with server 
DETAIL: The data directory was initialized by PostgreSQL version 9.5, which is not compatible with this version 9.6.3. 
+0

Après avoir redémarré le service par 'brasser services', fait la sortie de' ps -ef | grep postgres' montre quelque chose? Sinon, le serveur n'est pas en cours d'exécution - ce qui semble probable, compte tenu de l'erreur. Vérifiez les journaux (devrait être dans /usr/local/var/log/postgres.log) et voir s'il y a quelque chose d'intéressant là-dedans. – dmfay

+0

Ajouté une mise à jour à la question –

Répondre

3

Si vous souhaitez utiliser vos données 9.5 avec le serveur 9.6. vous devez exécuter:

  • pg_upgrade (here) ou
  • pg_dump de 9,5 à déposer et pg_restore | psql selon le type de sauvegarde sur 9,6 ... (here)

si vous choisissez première option, aucune autre mesure nécessaire - votre version par défaut est de 9,6 et il fonctionnera avec le répertoire de données existantes.

avant d'exécuter pg_upgrade, faites une copie de froid data_directory

3

La définition du service spécifie encore votre ancien 9.5 données annuaire. Si vous ouvrez ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist vous devriez voir une section qui ressemble à ceci:

<key>ProgramArguments</key> 
<array> 
    <string>/usr/local/opt/postgresql/bin/postgres</string> 
    <string>-D</string> 
    <string>/usr/local/var/postgres9.5</string> 
</array> 

Modifier le dernier argument pour pointer vers votre répertoire de données 9.6.3 et redémarrez le service . Si ce n'est pas le cas, vous devrez peut-être vous déconnecter et revenir en arrière afin qu'il relise le plist.

+0

J'ai été capable d'ouvrir et éditer ce fichier (il montre l'ancienne version). Mais il revient à l'ancienne version après que je l'ai mise à jour si je redémarre postgres avec 'brew services restart postgres'. Y a-t-il une autre façon de le mettre à jour que 'sudo nano ...' –

+0

Le répertoire de données par défaut pour les installations Homebrew est [/usr/local/var/postgres](https://wiki.postgresql.org/wiki/Installers /Mac OS X). Si vous changez les répertoires, vous devriez être en mesure de mettre à niveau sans vous soucier de cela. – dmfay