Неможливо вимкнути старий поштовий майстер під час оновлення до Postgres 9.2


13

Я переходжу на Postgres 9.2.2 (з 9.1.4). Коли я намагаюся оновити БД, використовуючи:

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

Я отримую таке повідомлення про помилку:

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

Я намагаюся зупинити сервер, але не можу заставити команду оновлення працювати. Як вимкнути старого пошта?

Відповіді:


11

Це postmaster.pidмає бути всередині usr/local/varпапки попередньої версії . Просто перейменування цього файлу повинно вирішити проблему.


Я також стикався з цією проблемою пару разів, і це хороша відповідь. Припинення всіх екземплярів постгресів перед оновленням повинно бути доречним і
Джеронім

4

В OS X Yosemite після встановлення PostgreSQL через Homebrew:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
Це не виправить проблему. Якщо pg_ctl -D /usr/local/var/postgres/ stopповернеться No such process, то слід rm /usr/local/var/postgres/postmaster.pid.
Ендрю

1

У більшості систем Unix ви знайдете скрипт init, за допомогою /etc/init.dякого можна запустити, перезапустити, перезавантажити або зупинити послуги Unix.

напр

sudo /etc/init.d/postgresql stop

Якщо такої можливості немає, ви можете скористатися pg_ctl stop

напр

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

Більше про pg_ctl

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

EDIT Якщо ви все-таки отримаєте помилку і впевнені, що поштовий майстер більше не працює (перевірте sudo ps aux | grep "postmaster"- слід повернути лише один рядок), у вас залишиться файл pid після нечистого відключення

Видаліть pidfile, наприклад

> sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp

1
Коли я намагаюся pg_ctl stop, я отримую: pg_ctl: no database directory specified and environment variable PGDATA unset. До речі, ні один сервер не здається, працює: luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres.
Лучано

греп для пошти

Оновлена ​​відповідь з додатковою інформацією

Не пощастило:sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster
Лучано

Вирішено питання. Дивіться мою відповідь.
Лучано

0

На Ubuntu зупиніть службу PostgreSQL перед оновленням. Це зупинить усі екземпляри постгресів незалежно від встановлених версій.

service postgresql stop

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.