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.
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.
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:
Je suis ensuite retourné et:
et tout a bien fonctionné!
J'ai alors réalisé que
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.
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
Essayez d'ajouter ceci à votre profil .bash_ comme indiqué ici :
export PGHOST=localhost
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
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:
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
.
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.
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 !.