Я установил Postgresql, а затем запустил кучу приложений rails на моем локальном Mac OSX Mountain Lion, создал базы данных и т. Д. Сегодня, через некоторое время, когда я запустил pgAdminIII и попытался запустить сервер базы данных, я получил эту ошибку:
Быстрый гугл показал это пост. Более продолжительный просмотр указал на то, что может лежать какой-то файл postmaster.pid, который может быть основной причиной этого. Если я удалю это, все будет в порядке.
Однако, прежде чем я начну удалять что-то на своем компьютере, я хотел убедиться, что я отлаживаю это систематическим образом, что не приведет к дополнительным проблемам.
Где-то я читал, что перед удалением этого файла мне нужно выполнить эту команду:
ps auxw | grep post
Если я не получу результатов, можно удалить файл. Иначе нет. Что ж, я получил такой результат этой команды:
AM 476 0.0 0.0 2423356 184 s000 R+ 9:28pm 0:00.00 grep post
Так что теперь я, конечно, полностью запутался.
Так что я должен делать?
Вот часть моего журнала ошибок сервера postgres:
FATAL: lock file "postmaster.pid" already exists
HINT: Is another postmaster (PID 171) running in data directory "/usr/local/var/postgres"?
Postgresql все еще не запущен, по-прежнему возникает та же ошибка, и ничего не изменилось. Я слишком курица, чтобы удалять вещи, не проверяя SO.
Могли бы некоторые из вас, эксперты, помочь новичку.
благодаря
postmaster.pid
. Сервер удаляет его при запуске, если он недействителен (устарел), и это важно для защиты данных. Пожалуйста, объясните, как вы для начала установили PostgreSQL на свой компьютер - через установщик EnterpriseDB, homebrew, Postgres.app, что? Также упомяните версию PostgreSQL. Наконец, если вы явно добавите "localhost" к параметрам подключения в Pgadmin-III, это сработает? Если это так, то вас укусило действительно плохое решение Apple по упаковке, которое недавно приняла Apple ...postmaster.pid
то вы можете удалить его после проверки отсутствияpostgres
запущенных процессов, просто жизненно важно, чтобы вы были уверены, что на самом деле нет никаких процессов PostgreSQL. Однако отказ сервера от удаления устаревшего файлаpostmaster.pid
кажется мне ошибкой.Ответы:
Сегодня у меня была такая же проблема на Mac Sierra. В Mac Sierra вы можете найти
postmaster.pid
внутри/Users/<user_name>/Library/Application Support/Postgres/var-9.6
. Удалитеpostmaster.pid
и проблема будет исправлена.источник
postmaster.pid
в этом месте, и проблема устранена. Благодаря!postmaster.pid
файл, поскольку я использую Postgres.app/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
cat postmaster.pid
каталог, чтобы заглянуть в него и указать, что вы не видите PID в чем-то вроде монитора активности. Пользовательский интерфейс Postgres предупредит вас об этом, но я подумал, что должен поместить его здесь, прежде чем люди волей-неволей поймут, как себя проверить. Также должно быть достаточно поискатьpostgres
в мониторе активности и убить все, что связано, или просто перезагрузить систему, а затем удалить файл. Невыполнение этого может привести к повреждению базы данных 🔥Это может произойти, если база данных не закрылась правильно. Чтобы исправить это, просто удалите
postmaster.pid
файл. Расположение зависит от вашей ОС:MacOS:
или используя Postgres.app:
Linux:
источник
postmaster.pid
и запускаpostgres -D /usr/local/var/postgres
он замечает причину ошибки: «Система базы данных не была должным образом завершена; выполняется автоматическое восстановление»Сейчас у меня работает база данных.
Вот шаги, которые я предпринял:
cd /
ls -la
MackintoshHD/usr/local/var/postgres
ls -la
cp postmaster.pid ~/Desktop
которая скопировала файл на свой рабочий стол. Мне нравится делать это, если я удаляю файлы. Если что-то не так, я могу вернуть егоrm -r postmaster.pid
Спасибо @Craig Ringer за его помощь
источник
Я использую Postgres.app, и у меня сработало следующее:
Я ввел команды в свой терминал ниже, предварительно указав папку Postgres и не используя "justin".
$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4" $pg_ctl restart -m immediate
Как объясняет Джастин в своем сообщении, результат после этого был:
После повторного ввода команды:
Это сработало, и я получил это сообщение:
Источник
источник