Je mettant la mise à niveau vers Postgres 9.2.2 (à partir du 9.1.4). Lorsque j'essaie de mettre à niveau les DBS en utilisant:
pg_upgrade -b /usr/local/Cellar/postgresql/9.1.4/bin -B /usr/local/Cellar/postgresql/9.2.2/bin -d /usr/local/var/postgres91 -D /usr/local/var/postgres
Je reçois le message d'erreur suivant:
Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories ok
There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting
J'ai essayé d'arrêter le serveur, mais je ne peux pas obtenir la commande de mise à niveau pour fonctionner. Comment arrêter l'ancien maître de poste?
Le postmaster.pid
devrait être à l'intérieur de la version précédente usr/local/var
dossier. Le simple fait de renommer ce fichier devrait résoudre le problème.
Dans OS X Yosemite, après avoir installé PostgreSQL via Homebrew:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Sur la plupart des systèmes UNIX, vous trouverez un script init en /etc/init.d
Sur lequel vous pouvez utiliser pour démarrer, redémarrer, recharger ou arrêter les services UNIX.
par exemple.
Sudo /etc/init.d/postgresql stop
Si cela n'est pas disponible, vous pouvez utiliser pg_ctl stop
par exemple.
su - postgres
bash-3.1$ pg_ctl stop # normal stop
bash-3.1$ pg_ctl stop -m s # smart stop
bash-3.1$ pg_ctl stop -m f # fast stop
bash-3.1$ pg_ctl stop -m i # immediate stop
Plus à propos pg_ctl
http://www.postgresql.org/docs/9.1/static/app-pg-ctl.html
[~ # ~] Edit [~ # ~] Si vous obtenez toujours l'erreur et que vous êtes sûr que le maître de poste n'est plus en cours d'exécution (vérifiez avec Sudo ps aux | grep "postmaster"
- devrait renvoyer une ligne uniquement) Vous avez toujours le fichier PID après un arrêt impural
Supprimer le PIDFILE E.G.
> Sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp
Sur Ubuntu, arrêtez le service PostgreSQL avant d'effectuer la mise à niveau. Cela empêchera toutes les instances de postgres quelles que soient les versions installées.
service postgresql stop