Voici le message d'erreur que je reçois aujourd'hui lorsque j'essaie de me connecter à mes bases de données PosgreSQL localhost en utilisant 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"?
J'ai installé PostgreSQL en utilisant Homebrew et ce matin, j'ai désinstallé et réinstallé en utilisant cet utilitaire, sans aucun changement observable. Le client psql
fonctionne très bien et je peux toujours l'utiliser pour me connecter à des bases de données sur le réseau. Je ne me connecte à mes bases de données locales qu'une fois par mois ou deux, et cela fonctionnait bien avant, donc je suppose que cela est dû à une mise à jour automatique mais je ne sais pas laquelle. Mac OS s'est récemment mis à niveau vers High Sierra (10.13).
Le même message d'erreur est apparu ici en 2014 ( link ) mais c'était un cas où un gars avait du mal à démarrer le serveur. Dans mon cas, je crois qu'il fonctionne - j'ai utilisé brew services start postgresql
et oui, j'ai redémarré plusieurs fois aujourd'hui. Cependant, le fichier mentionné dans l'erreur, /tmp/.s.PGSQL.5432
, n'existe pas sur mon système. Je pense que c'est le cas d'une erreur de configuration. Quelqu'un a une idée de comment réparer?
Mise à jour: j'ai essayé de démarrer le serveur manuellement (comme recommandé par Evan) et je pense que j'ai fait une percée. Voici l'erreur que j'obtiens lorsque j'essaie de le démarrer manuellement:
FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.6, which is not compatible with this version 10.1.
Mise à jour 2: Finalement, j'ai résolu ce problème en remplaçant mon répertoire de données et en le réinitialisant avec une base de données vide en utilisant initdb
comme dans la réponse marquée "correct". Pour être juste, les trois réponses ont été utiles. Je n'ai pas pu mettre à jour la base de données de l'ancienne version vers la nouvelle car je n'avais plus les binaires de l'ancienne version de Postgres.
Si vous ne disposez d'aucune donnée, cela semble être un problème avec Brew. Avez-vous exécuté la mise à niveau brew
, il y a deux réponses sur StackOverflow qui traitent de cela, j'ai fusionné les deux pour essayer le meilleur des deux mondes.
Sauvegarde
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Sudo mv /usr/local/var/postgres /usr/local/var/.postgres_bak;
S'assurer que vous disposez de la dernière version
brew update
brew upgrade postgresql
Soit, pas les deux réinitialiser ou essayer de mettre à jour votre répertoire de données
Nuke it (recommencer à zéro, en laissant l'ancien sauvegarde)
initdb /usr/local/var/postgres -E utf8
Essayez de le mettre à niveau
pg_upgrade -b /usr/local/Cellar/postgresql/$myOldVersion/bin/ -B /usr/local/Cellar/postgresql/$myNewVersion/bin -d /usr/local/var/.postgres_bak -D /usr/local/var/postgres
Redémarrez le serveur.
brew services start postgresql
Supprimez la sauvegarde, si le serveur redémarre et que tout fonctionne, supprimez la sauvegarde
Sudo rm -rf /usr/local/var/.postgres_bak
J'espère que vous n'avez pas exécuté brew cleanup postgresql
encore. brew info
donne toutes les informations pertinentes, y compris si vous avez toujours la version précédente et le fait que vous pourriez avoir besoin d'exécuter pg_upgrade
(sortie raccourcie ci-dessous).
Cela vous indiquera la version de votre base de données: cat /usr/local/var/postgres/PG_VERSION
Si vous ne vouliez pas passer à PostgreSQL 10.1, et en supposant que votre version précédente est 9.6.6, cela pourrait suffire: brew switch postgresql 9.6.6
Si vous devez réinstaller une ancienne version, cela pourrait fonctionner: https://stackoverflow.com/a/9832084/279726
Il semble que le répertoire de données soit /usr/local/var/postgres
par défaut (comme je n'ai pas changé le mien), voir la dernière ligne de sortie ci-dessous.
$ brew info postgresql
postgresql: stable 10.1 (bottled), HEAD
[...]
==> Caveats
To migrate existing data from a previous major version of PostgreSQL, see:
https://www.postgresql.org/docs/10/static/upgrading.html
You will need your previous PostgreSQL installation from brew to perform
`pg_upgrade` or `pg_dumpall` depending on your upgrade method.
Do not run `brew cleanup postgresql` until you have performed the migration.
To have launchd start postgresql now and restart at login:
brew services start postgresql
Or, if you don't want/need a background service you can just run:
pg_ctl -D /usr/local/var/postgres start
$
Mais si vous voulez utiliser 10.1, vous pouvez exécuter quelque chose comme ceci, en supposant toujours que vous exécutiez 9.6.6 auparavant (changer le nom du répertoire en fonction de votre précédent version PostgreSQL). Exécutez une commande à la fois et vérifiez la sortie avant de passer à la suivante:
mv -i /usr/local/var/postgres /usr/local/var/postgres96
mkdir /usr/local/var/postgres
pg_upgrade -b /usr/local/Cellar/postgresql/9.6.6/bin -B /usr/local/Cellar/postgresql/10.1/bin -d /usr/local/var/postgres96 -D /usr/local/var/postgres
Voir ici pour plus de détails: https://www.postgresql.org/docs/10/static/pgupgrade.html
********************************************************
* PLEASE MAKE BACKUPS BEFORE DOING ANY OF THE ABOVE!!! *
********************************************************
Le plus drôle, c'est que si j'essaie d'installer la dernière PostgreSQL, j'obtiens:
$ brew install postgresql
Error: postgresql 9.5.5 is already installed
To upgrade to 10.1, run `brew upgrade postgresql`
Je ne sais donc pas comment vous êtes passé de 9.6.x à 10.1 sans voir ce message ...
Sudo ps aux
?netstat
voir ce génial article de Craig .Vous pouvez également vouloir voir cet article, et démarrer le serveur manuellement .