БД Postgres не запускається на Mac OSX: ПОМИЛКА каже: підключення на сокеті домену Unix [закрито]


81

Я встановив Postgresql, а потім запустив купу програм для рейок на своєму локальному Mac OSX Mountain Lion і створив бази даних тощо. Сьогодні через деякий час, коли я запустив pgAdminIII і спробував запустити сервер баз даних, я отримав цю помилку:

введіть тут опис зображення

Швидкий Google показав цю публікацію. Більше перегляду вказувало на той факт, що навколо може лежати якийсь файл 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.

Не могли б деякі з вас, експерти, направити нуб.

Дякую


По-перше, я не фахівець. З урахуванням цього, схоже, ваша база даних не вимикалася належним чином. Я б видалив файл pid і спробував запустити базу даних.
fbynite

Так, це те, що я хочу зробити, але я десь читав, що це може завдати постійної шкоди базі даних, якщо pid працює під час цього. Не впевнений, про що це було
banditKing

@banditKing Вам ніколи не потрібно видаляти postmaster.pid. Сервер видаляє його під час запуску, якщо він недійсний (застарілий), і це важливо для захисту даних. Поясніть, будь ласка, як ви встановили PostgreSQL на свій комп’ютер - за допомогою інсталятора EnterpriseDB, homebrew, Postgres.app, що? Також згадайте версію PostgreSQL. Нарешті, якщо ви явно додаєте "localhost" до параметрів підключення в Pgadmin-III, це працює? Якщо так, вас покусало дійсно погане рішення щодо упаковки, яке Apple прийняла деякий час тому ...
Крейг Рінгер,

@CraigRinger дякую за роз'яснення. Я не пам’ятаю, як я його встановив, це було деякий час тому. Чи можу я щось зробити? Або дані там просто тестові дані, тому в гіршому випадку я можу видалити та перевстановити. Будь-які хороші блоги / підручники про те, як це правильно робити?
banditKing

1
@banditKing Спробували перезавантажити? Ви можете визначити спосіб встановлення за цим посиланням: wiki.postgresql.org/wiki/Installers/Mac_OS_X . Схоже, ви, мабуть, використовували Homebrew. Якщо сервер PostgreSQL неправильно не вдається видалити, postmaster.pidви можете видалити його, переконавшись, що не postgresзапущені процеси, дуже важливо, щоб ви були впевнені, що насправді немає процесів PostgreSQL. postmaster.pidОднак невдача сервера видалити застаріле здається мені помилкою.
Крейг Рінгер,

Відповіді:


192

У мене була така сама проблема сьогодні на Mac Sierra. У Mac Sierra ви можете знайти postmaster.pidвсередині /Users/<user_name>/Library/Application Support/Postgres/var-9.6. Видалення postmaster.pidі проблема буде виправлена.


19
Видалено postmaster.pidв цьому місці, і проблему вирішено. Дякую!
JLF

1
Тут мені також потрібно було знайти postmaster.pidфайл, оскільки я використовую Postgres.app
Ярсен,

3
Для Postgres.app це те саме: може бути, що він знаходиться тут/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
Саймон Францен

1
Я також використовую Postgres.app під управлінням v10. Якщо на моєму Mac відбулося несподіване завершення роботи під час роботи Postgres, мені потрібно перейти та видалити файл postmaster.pid під час перезавантаження комп'ютера. Хтось знає, чи це очікувана поведінка програми? Здається, дивний дизайн, якщо навмисний.
Олександр

Перш ніж видаляти цей файл, переконайтеся, що процес завершено. Ви можете запустити cat postmaster.pidв каталозі, щоб зазирнути і вказати, що ви не бачите, що ПІД працює в щось на зразок монітора активності. Інтерфейс користувача Postgres попередить вас про це, але я подумав, що я повинен помістити його тут, перш ніж люди стануть волею-неволею і як перевірити себе. Також має бути достатньо шукати postgresв моніторі активності та вбивати все, що пов’язано, або просто перезавантажити систему, а потім видалити файл. Якщо цього не зробити, це може призвести до корумпованого db 🔥
CTS_AE

42

Це може статися, якщо база даних не вимикалася належним чином. Щоб виправити це, просто видаліть postmaster.pidфайл. Місцезнаходження відрізняється залежно від вашої ОС:

MacOS:

 rm /Users/<user_name>/Library/Application\ Support/Postgres/var-9.6/postmaster.pid

або за допомогою Postgres.app:

 rm /Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid

Linux:

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

2
Дякую, це рішення працює! Після видалення postmaster.pidта запуску postgres -D /usr/local/var/postgresвін помічає мене про причину помилки: "Система баз даних не була належним чином вимкнена; виконується автоматичне відновлення"
Хоанг Ле,

це вирішило мою проблему
Фабріс Йопа

Це працює. У моєму випадку файл pid не був видалений через жорстку перезавантаження, тому просто потрібно було створити його резервну копію.
Джордж С

21

У мене зараз працює база даних.

Ось кроки, які я зробив:

  1. Я перезавантажив свій комп’ютер
  2. Я відкрив термінал і побіг cd /
  3. Тоді я зробив ls -la
  4. Переконався, що зможу дістатися MackintoshHD/usr/local/var/postgres
  5. Потім зробив ls -la
  6. Тут я побачив файл postmaster.pid
  7. Я виконав цю команду cp postmaster.pid ~/Desktop яка скопіювала файл на робочий стіл. Я люблю робити це, якщо видаляю файли. Якщо щось не так, я можу повернути це назад
  8. Потім я запустив цю команду, щоб видалити файл із каталогу postgres rm -r postmaster.pid
  9. Я підійшов до мого графічного інтерфейсу pgadmin3 і розпалив його. і вуаля це спрацювало :)

Дякую @Craig Ringer за допомогу


6
Мій був не в / usr / local / var / postgres, а в / Users / [myhome] / Library / Application Support / Postgres / var-9.5 / - останній каталог залежить від вашої версії, видалив postmaster.pid і працював як заклинання, дякую
Радек

4

Я використовую Postgres.app, і нижче мені працювало:

Я ввів команди у свій термінал нижче, заздалегідь знайшовши папку Postgres і не використовуючи "justin".

$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4"

$pg_ctl restart -m immediate

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

чекає вимкнення сервера ……………………………………………………… pg_ctl: сервер не вимикається

Після повторного введення команди:

$pg_ctl restart -m immediate

Це спрацювало, і я отримав таке повідомлення:

pg_ctl: старий серверний процес (PID: 373), схоже, зник, запускаючи сервер, все одно сервер починаючи LOG: система баз даних перервана; востаннє відомий на 28.07.2015 18:15:26 LOG PDT: система баз даних не була належним чином вимкнена; триває автоматичне відновлення LOG: запис нульової довжини при 0 / 4F0F7A8 LOG: повтор не потрібно LOG: система бази даних готова приймати підключення LOG: запущено автовакуум

Джерело

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