PostgreSQL не працює на Mac


55

Помилка в повному обсязі говорить:

psql: не вдалося підключитися до сервера: Немає такого файлу чи каталогу. Чи працює сервер локально і приймає з'єднання в сокеті домену Unix "/tmp/.s.PGSQL.5432"?

Це вдруге налаштування Postgresql через Homebrew на моєму Mac, і я не маю поняття, що відбувається. Раніше це працювало. У якийсь момент я мав ввести команду, яка переплутала речі. Я не впевнений. Тепер, коли я ввожу команду SQL з командного рядка, я отримую вищезгадане повідомлення. Я запустив команду, щоб перевірити, чи працює сервер, і, мабуть, це не так. Якщо я спробую запустити сервер за допомогою

$ postgres -D / usr / local / pgsql / дані

Я отримую таку помилку:

postgres не може отримати доступ до файлу конфігурації сервера "/usr/local/pgsql/data/postgresql.conf": такого файлу чи каталогу немає

Я видалив та перевстановив Postgresql через Homebrew, але проблема зберігається. Я повністю розгублений щодо того, як налагодити це. Будь-яка допомога буде вдячна.

Відповіді:


51

Проблему також можна віднести до збитого процесу, який залишив postmaster.pidфайл.

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

4
На MacOSX ця відповідь врятувала мене. Була така ж помилка, що і OP після перезавантаження комп'ютера. brew servicesКоманда не були корисні , тому що вони зробили це , здається , як все працює. Видалення цього postmaster.pid, зрештою, все знову запрацювало. Дякую!
vinhboy

1
Це сталося і зі мною. Жорсткий збій Mac OS X спричинив перезавантаження, після цього Postgres не з'явився. Служби заварювання / запуск / перезапуск служб не працюють, вам доведеться видалити pid-файл вручну.
Маттайс

Рекомендованим способом було б, звичайно, запуск Postgres в докер-контейнері. Дуже просто починати, і все прибирається при закритті контейнера. Я б сказав, що запуск будь-якого додатка третьої сторони в докер-контейнері має бути фактично сьогодні.
демікс

43

Відповідь тут .

Запустіть цю команду, щоб вручну запустити сервер:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

14

Я отримував те саме

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

петля Homebrew встановити / запустити / зупинити / перезапустити безрезультатно ...

Нарешті, brew postgresql-upgrade-databaseпрацювали.

Здається, я був на 9.6 замість 10.4, і щось моє останнє перезавантаження App Store перезапустило всі мої сервери баз даних ...


це працювало для мене
davideghz

Саме brew postgresql-upgrade-databaseцього я бракував. Дякуємо, що вказали на це.
Корин

Працювали для мене спасибі!
Ервін Ройджаккерс

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

11

Я щойно вирішив ту саму проблему. Це просто тому , що я забув , щоб запустити його належним чином перед використанням.

Для чистої установки postgresql на Mac OS процес буде (за допомогою команди brew ):

brew install postgresql

то якщо ви хочете автоматично запуститись postgresqlпри вході:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

інакше ви просто хочете запустити його будь-коли:

postgres -D /usr/local/var/postgres

Якщо ваш випадок складніший, давайте brew uninstall postgresqlповторимо ці кроки.

Сподіваюся, це допомагає!


1
Оновлення: для встановлених Homebrew postgres brew services start postgresqlтепер кращий спосіб запускати postgres при вході в систему
Генрі

5
psql: could not connect to server: No such file or directory
    Is the server running locally and accepting
    connections on Unix domain socket"/var/pgsql_socket/.s.PGSQL.5432"?

Я продовжував отримувати вищевказану помилку, і жодне з перерахованих вище рішень не працювало на мене. Нарешті наступне рішення вирішило мою проблему на Mac OS X

Встановіть postgres за допомогою brew

brew install postgres

Встановити сервіси пивоваріння

brew tap homebrew/services

Щоб запустити postgres як фоновий сервіс

brew services start postgresql

Щоб зупинити постгреси вручну

brew services stop postgresql

Ми також можемо використовувати сервіси пивоваріння для перезавантаження Postgres

brew services restart postgresql

2

Це відбувається, коли сервер postgres не працює. Кроки щодо правильної установки Postgres через Homebrew на MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Це ініціалізує постгреси, щоб використовувати даний каталог як каталог баз даних. Зазвичай не рекомендується використовувати каталог користувачів для зберігання баз даних. Редагуйте файл sudoers, щоб додати initdb та подібні команди, а потім запустіть initdb у / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Після досягнення успіху на кроці 2 він запропонує виконати крок 3. Ця команда запускає сервер вручну.]


2

Це працювало для мене. Змініть свій каталог postgresql відповідно до версії вашої системи.

Загальний шлях- rm /usr/local/var/postgres/postmaster.pid

але для postgresql@9.6 в моєму системному шляху є rm /usr/local/var/postgresql@9.6/postmaster.pid

перезапустити postgresql@9.6- brew services restart postgresql@9.6


так це єдиний, який працює!
PirateApp

1

Я просто коментую в /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

та перезапустити postgres. І для мене це працює.


1

недавно я пішов через подібну проблему. є ще одна проблема та рішення. Я працював з 2 версією postgres (9.3 та 9.6), хоча сервер був встановлений для роботи на двох різних портах, але деякі, як команда psql в bash, намагаються підключитися до порту за замовчуванням 5432. Обов'язково перевірте, чи працює ваш сервер і перевірте налаштування порту, а потім запустіть psql -p <port> postgres. Рішення - це зміна порту.


1

Я довго шукав, і це було найбільш чисте і акуратне рішення:

Нещодавно я оновив Postgres з 9,2 до 9,3, використовуючи оновлення для оновлення пива. Процес пройшов гладко, а pg_upgrade - дуже зручний інструмент.

Однак неприємності зазнали одного разу, коли я спробував запустити будь-які характеристики, необхідні для підключення до Postgres. Незважаючи на те, що Postgres напевно бігав, раптом я отримував:

не вдалося підключитися до сервера: Немає такого файлу чи каталогу (PG :: ConnectionBad) Чи працює сервер локально і приймає з'єднання в сокеті домену Unix "/var/pgsql_socket/.s.PGSQL.5432"? Проблема полягала в тому, що нова версія Postgres натомість слухає /tmp/.s.PGSQL.5432. Я міг заплутатися з налаштуванням і змусив Postgres використовувати доменний сокет, який був раніше, або розповів Rails експліцитно, як підключитися, але обидва ці підходи здавалися роботою, яку мені не довелося робити. Ні в який момент я не казав Рейлу підключитися до постгресів на цьому шляху, Райлс припустив це, і тепер його припущення були помилковими.

Виправлення просте, якщо трохи не дивує. Коли ви встановлюєте gg 'pg', він визначає, яка версія Postgres встановлена, і встановлює шлях до сокета домену належним чином. Рішення таке ж просте, як і перевстановлення дорогоцінного каменю. $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrading-postgres/


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

0

оновити його за допомогою команди

  brew postgresql-upgrade-database

якщо у вас є наступна помилка Команда 'варити' не знайдена, але її можна встановити за допомогою: sudo apt install linuxbrew-wrapper

потім встановіть його за допомогою команди

 sudo apt install linuxbrew-wrapper

-3

Наведені нижче кроки допомагають мені:

пиво видалити postgresql варити варити встановити postgresql заварити postgresql-upgrade-database

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