No se puede cerrar el antiguo administrador de correo al actualizar a Postgres 9.2

13

Estoy actualizando a Postgres 9.2.2 (desde 9.1.4). Cuando intento actualizar las bases de datos usando:

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

Me sale el siguiente mensaje de error:

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

Intenté detener el servidor, pero no puedo hacer que el comando de actualización funcione. ¿Cómo apago el antiguo administrador de correo?

Luciano
fuente

Respuestas:

11

El postmaster.piddebe estar dentro de la usr/local/varcarpeta de la versión anterior . Simplemente cambiar el nombre de este archivo debería resolver el problema.

Luciano
fuente
También me he encontrado con este problema un par de veces y esta es una buena respuesta. También debería ser pertinente detener todas las instancias de postgres antes de la actualización
Jerome
4

En OS X Yosemite, después de haber instalado PostgreSQL a través de Homebrew:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Sarah Vessels
fuente
1
Esto no soluciona el problema. Si pg_ctl -D /usr/local/var/postgres/ stopregresa No such process, entonces deberías rm /usr/local/var/postgres/postmaster.pid.
Andrew
1

En la mayoría de los sistemas Unix, encontrará un script de inicio en el /etc/init.dque puede usar para iniciar, reiniciar, recargar o detener servicios de Unix.

p.ej

sudo /etc/init.d/postgresql stop

Si esto no está disponible, puede usar pg_ctl stop

p.ej

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

Más sobre pg_ctl

http://www.postgresql.org/docs/9.1/static/app-pg-ctl.html

EDITAR Si aún recibe el error y está seguro de que el administrador de correo ya no se está ejecutando (consulte con sudo ps aux | grep "postmaster"- solo debe devolver una línea) todavía tiene el archivo pid después de un cierre impuro

Eliminar el archivo pid

> sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp
Michel Feldheim
fuente
1
Cuando intento pg_ctl stop, consigo: pg_ctl: no database directory specified and environment variable PGDATA unset. Por cierto, hay un servidor parece estar funcionando: luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres.
Luciano
grep para postmaster
Respuesta actualizada con más información
Sin suerte:sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster
Luciano
Problema resuelto. Mira mi respuesta.
Luciano
0

En Ubuntu, detenga el servicio PostgreSQL antes de realizar la actualización. Esto detendrá todas las instancias de postgres independientemente de las versiones instaladas.

service postgresql stop

scarver2
fuente