web-dev-qa-db-fra.com

Réparation de postgresql après la mise à niveau vers OSX Mavericks

Une récente mise à niveau vers OSX Mavericks a rompu la connexion à la base de données de mon application Rails.

Lorsque j'essaie d'extraire de la base de données, le serveur renvoie l'erreur suivante:

PG::ConnectionBad (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" (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" (fe80::1) and accepting
    TCP/IP connections on port 5432?

Lorsque j'essaie de lancer psql je reçois:

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 essayé plusieurs des solutions disponibles sur Internet. Une telle réinstallation de la gem pg et la définition de Host: localhost dans mon database.yml. Mon fichier /usr/local/var/postgres/pg_hba.conf dit:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     RyanKing                                trust
#Host    replication     RyanKing        127.0.0.1/32            trust
#Host    replication     RyanKing        ::1/128                 trust

quel psql retourne: /usr/local/bin/psql


Des solutions sur celui-ci? Certaines solutions suggèrent que je dois changer mon $ PATH pour mon installation précédente de postgres, car une nouvelle version de postgres serait ajoutée avec Mavericks. Comment puis-je trouver où cela se trouve? Il est fort possible qu'il ait été installé avec un homebrew mais je n'en suis pas certain.

21
Ryan King

si vous l'avez installé via homebrew, essayez ceci (à partir de brew info postgresql)

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

Ce qui va le recharger. Postgress.app ne trouvera pas vos bases de données par défaut (vous devrez le pointer vers le répertoire PGDATA et vous pourriez avoir des conflits de version (si vous exécutiez 9.2 et postgress.app en version 9.3, un dump/restore serait dans l'ordre. .

en tirant des commentaires. 

ok donc on dirait que vous avez installé 9.2.3, voici ce que je ferais. 

postgres -D /usr/local/var/postgres 

Puis relevez-les tous. pg_dumpall > ~/mydatabases.dump

tuer postgres 

un brew reinstall postgresql, mais cela vous mènera de 9.2.3 à 9.3.1. Puis réimportez toutes vos bases de données psql < mydatabaes.dump. Assurez-vous de suivre les instructions sur le déchargement/chargement pour le lancement, et à ce stade, vous devriez être bon. Vous pouvez également envisager d'utiliser postgress.app et d'importer vos bases de données dans cette application, mais vous devrez quand même sauvegarder/sauvegarder votre base de données. 

23
Doon

tl; dr Il suffit de démarrer l'application Postgres!

FWIW, j’ai eu exactement la même expérience après la mise à niveau de Mavericks et après:

  • Installation et démarrage de la version 9.3 (apparaissant sous le nom Postgres93 dans mon dossier d’application)
  • Déplacer 9.2 à la corbeille
  • Voir Rails échouer car mes bases de données n'ont pas été migrées

Je suis ensuite retourné et:

  • Quitter 9.3
  • Restauré 9.2 depuis la corbeille
  • A commencé 9.2

et tout a bien fonctionné!

J'ai alors réalisé que

  • Le problème était que Postgres n'avait pas été exécuté après l'installation de Mavericks
  • Je n'avais encore jamais fait quelque chose d'explicite pour que Postgres soit lancé au démarrage, mais ...
  • Mac OS ne faisait que redémarrer Postgres après un redémarrage, car il fonctionnait auparavant.
6
Peter Alfvin

Avait le même problème. Constaté que la mise à niveau avait tué les processus et laissé le fichier pid postgres. Alors, ne soyez pas un idiot comme moi et cliquez sur le redémarrage pour mettre à jour votre OSX. Assurez-vous de tout arrêter proprement avant la mise à niveau.

6
GregD

La solution la plus simple consiste à utiliser http://postgresapp.com qui fonctionne

Pour installer via homebrew, assurez-vous de faire brew update pour que l'homebrew fonctionne à nouveau

5
jewilmeer

Essayez d'ajouter ceci à votre profil .bash_ comme indiqué ici :

export PGHOST=localhost
4
Daniel Ristic

Ce problème m’est arrivé récemment lorsque je suis passé à la version 10.9.4. 

Après une journée d'essais et d'erreurs, j'ai trouvé ce message de Joho qui corrigeait mes problèmes: https://Gist.github.com/joho/3735740

Assurez-vous de modifier les versions pour qu'elles correspondent à vos versions d'installation. Si vous avez plusieurs versions installées comme moi, vous pouvez voir quelles versions en accédant à cd/usr/local/Cellar/postgresql. Ensuite, procédez comme suit, mais changez les numéros de version pour correspondre à vos installations.

En résumé:

$ launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
$ mv /usr/local/var/postgres /usr/local/var/postgres9.2
$ brew update
$ brew upgrade postgresql
$ initdb /usr/local/var/postgres -E utf8
$ pg_upgrade -b /usr/local/Cellar/postgresql/9.2.1/bin -B /usr/local/Cellar/postgresql/9.3.4/bin -d /usr/local/var/postgres9.2 -D /usr/local/var/postgres
$ cp /usr/local/Cellar/postgresql/9.3.4/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

Si vous utilisez Ruby, aussi:

$ gem pristine pg

J'espère que ça aide! Ça l'a fait pour moi

2
Brent11

Si vous installez via .dmg, vous pouvez simplement réinstaller le programme d’installation de Postgres (postgresql-9.1.3-1-osx.dmg dans mon cas). Un redémarrage peut être nécessaire aussi. Je l'ai fait hier - mes bases de données n'ont pas été supprimées et tout va bien maintenant.

Une chose similaire s'est produite entre Snow Leopard et Mountain Lion:

Mountain Lion Postgres n'a pas pu se connecter

1
Neil Billingham

Après avoir installé PostgreSQL en utilisant homebrew pour OS X Mavericks, cela a fonctionné pour moi:

Sudo ARCHFLAGS="-Arch x86_64" gem install pg

Si ce n'est pas le cas, cette commande a résolu le problème car, une fois que cela s'est produit après la mise à niveau du système d'exploitation vers OS X Yosemite et OS X El Capitan

Sudo PATH=$PATH:/Applications/Postgres.app/Contents/Versions/[Version-Number]/bin gem install pg -v [gem version]

Assurez-vous également que vous avez mis à jour vos Xcode et command line tools pour Xcode.

0
Lahiru

Si vous avez mis à niveau avec Homebrew, le problème est probablement le format de la base de données. Vérifiez-le en exécutant directement la commande postgres:

$ postgres
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.4.

Puisque mes bases de données de développement sont toutes des données de base, je les ai simplement détruites.

$ rm -rf /usr/local/var/postgres
$ initdb

Bien sûr, puisque cela tue tout, vous devrez recréer vos rôles avant que rake db: create puisse réussir.

$ createuser -s MyApp

Si vous ne connaissez pas le nom du rôle, exécutez simplement rake db: create. Il va vous dire.

0
bronson

Si vous avez trouvé cette page après une mise à niveau à partir de Yosemite, une approche différente est nécessaire pour résoudre le problème. La mise à niveau vers Yosemite détruit essentiellement certains fichiers. Vous pouvez trouver le problème et la solution ici !.

0
Obromios