2016-04-05 9 views
6

Я недавно установил PostGIS на моем Mac (El Capitan 10.11.4, Postgres является версия 9.5.1) с помощью Homebrew, и я, следуя этим инструкциям - http://morphocode.com/how-to-install-postgis-on-mac-os-x/FATAL ERROR "postmaster.pid" уже существует

Когда я пытаюсь запустить Postgres, используя

pg_ctl -D /usr/local/var/postgres start 

Я получаю следующее сообщение об ошибке:

$ FATAL: lock file "postmaster.pid" already exists 
HINT: Is another postmaster (PID 280) running in data directory "/usr/local/var/postgres"? 

Так что я провел несколько часов, исследуя, как решить эту проблему, но не пр Айыл.

Следует отметить, что я пытался убить PID, как рекомендовано в ответ на суперпользователя - https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists- (в случае, описанном выше, я побежал kill 208), но как только я попытался начать Postgres снова,

я получил такая же ошибка, хотя и с другим номером PID. Я видел, как несколько человек рекомендовали удалить файл postmaster.pid, но я чувствую, что, может быть, мне следует сохранить это как последнее средство ...

По общему признанию, часть причины я не уверен, как исправить это, что я «Не совсем понятно, что такое почтмейстер, - я только начинаю узнавать обо всем этом.

Перемещение в базу данных Postgres через команду psql db_name работает отлично, для чего это стоит.

ответ

3

Postmaster - это основной процесс PostgreSQL. Вы пытаетесь запустить PostgreSQL, который уже работает (и вы говорите, что можете подключиться к нему). Просто пропустите этот шаг вашего процесса.

+0

Oh! Спасибо. Теперь мне кажется очевидным, но я просто нахожу свой путь здесь. Очень признателен. – skwidbreth

7

TL; DR: Поскольку вы можете подключиться к базе данных, вам не нужно снова запускать сервер - он уже запущен.


pg_ctl используется для управления сервером PostgreSQL. Так как ваш сервер уже запущен, ваша команда:

pg_ctl -D /usr/local/var/postgres start 

Возвращает ошибку, говоря, что есть замок на postmaster.pid - что верно, так как уже есть сервер с помощью этого PID.


Есть два способа:

  1. Самый простой способ - пропустить этот шаг, ваш сервер уже запущен !
  2. Выполнение ненужной операции - остановка сервера и последующее его повторное включение.

Вы можете остановить сервер, выполнив:

pg_ctl -D /usr/local/var/postgres stop 

Так что вы не будете иметь блокировку на почтмейстера больше, и вы можете использовать команду, чтобы запустить его снова.

+1

О, мужчина, большое вам спасибо. Я действительно ценю твою помощь. Когда-нибудь я стану мастером PostGIS ... но до тех пор ... – skwidbreth

+0

PostGIS не имеет ничего общего с вашей проблемой :-) Это проблема Postgres. –

+0

Я копаю - просто убедившись, что я положил все на стол. – skwidbreth

3

проводки это в случае, если это помогает кто-то еще:

У меня был этой же проблема, что и ОП после жесткой перезагрузки, когда мой ноутбук разбился. Что помогло мне было выполнить следующую команду, чтобы увидеть, что PID был связан с postmaster.pid:

cat /usr/local/var/postgres/postmaster.pid

Первое число, которое появляется будет PID. Глядя в Activity Monitor, я смог увидеть, что Postgres запущен, но без номера PID, который соответствует показанному.

Вместо шагов, описанных в ответе на Superuser, я перезапустил свой ноутбук должным образом, а затем открыл терминал и запустил brew services restart postgresql.

Это работало без необходимости удаления postmaster.pid, который я видел в нескольких других сообщениях. Иногда это простые решения, которые работают.

Смежные вопросы