PostgreSQL не работает на Mac


56

Ошибка в полном объеме гласит:

PSQL: не удалось подключиться к серверу: нет такого файла или каталога. Работает ли сервер локально и принимает подключения через сокет домена Unix "/tmp/.s.PGSQL.5432"?

Я второй раз настраиваю Postgresql через Homebrew на моем Mac, и я понятия не имею, что происходит. Раньше это работало. В какой-то момент я, должно быть, ввел команду, которая все испортила. Я не уверен. Теперь всякий раз, когда я ввожу команду SQL из командной строки, я получаю вышеуказанное сообщение. Я запустил команду, чтобы проверить, работает ли сервер, и, очевидно, это не так. Если я пытаюсь запустить сервер с помощью

$ postgres -D / usr / local / pgsql / data

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

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

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

Ответы:


53

Проблема также может быть связана с аварийным процессом, который оставил 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 не появился. Запуск / остановка / перезапуск служб brew не работает, вы должны вручную удалить файл 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 перезапустил все мои серверы баз данных ...


это сработало для меня
Давидегз

Вот 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
Обновление: для Postgres, установленного в Homebrew, 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 Services

brew tap homebrew/services

Для запуска postgres в качестве фонового сервиса

brew services start postgresql

Чтобы остановить postgres вручную

brew services stop postgresql

Мы также можем использовать Brew Services для перезапуска Postgres

brew services restart postgresql

2

Это происходит, когда сервер postgres не работает. Шаги, чтобы правильно установить Postgres через Homebrew на MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Это инициализирует postgres для использования данного каталога в качестве каталога базы данных. Обычно не рекомендуется использовать каталог пользователя для хранения базы данных. Отредактируйте файл 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), хотя сервер был настроен на работу на 2 разных портах, но кое-как команда psql на bash пытается подключиться к порту по умолчанию 5432. Убедитесь, что сервер работает, и проверьте, настройки вашего порта, затем запустите psql -p <port> postgres. Решением является изменение порта.


1

Я долго искал, и это было самое чистое и аккуратное решение:

Недавно я обновил Postgres с 9.2 до 9.3, используя bg upgrade postgres. Процесс прошел гладко, и pg_upgrade - очень удобный инструмент.

Тем не менее, возникли проблемы, когда я попытался запустить любые спецификации, необходимые для подключения к Postgres. Хотя Postgres определенно бежал, я вдруг получил:

не удалось подключиться к серверу: нет такого файла или каталога (PG :: ConnectionBad). Сервер работает локально и принимает подключения через сокет домена Unix "/var/pgsql_socket/.s.PGSQL.5432"? Проблема заключалась в том, что новая версия Postgres прослушивает /tmp/.s.PGSQL.5432. Я мог бы возиться с конфигом и заставить Postgres использовать сокет домена, которым он был ранее, или четко указать Rails, как подключаться, но оба этих подхода казались работой, которую мне не нужно было делать. Я ни разу не велел Rails подключаться к postgres по этому пути, Rails предполагал это, и теперь его предположения были неверны.

Исправить это просто, если немного удивительно. Когда вы устанавливаете гем '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

если у вас есть следующая ошибка Команда 'brew' не найдена, но может быть установлена ​​с помощью: sudo apt install linuxbrew-wrapper

затем установите его с помощью команды

 sudo apt install linuxbrew-wrapper

0

Для меня это также произошло после перезагрузки, и ни одно из вышеперечисленных решений не помогло мне. После проверки журнала сервера вот так:

tail /usr/local/var/postgres/server.log

Я заметил:

    2019-11-06 11:04:31.797 CET [85029] FATAL:  data directory "/usr/local/var/postgres" has invalid permissions
2019-11-06 11:04:31.797 CET [85029] DETAIL:  Permissions should be u=rwx (0700) or u=rwx,g=rx (0750).

Поэтому я изменил права доступа следующим образом:

sudo chmod 700  /usr/local/var/postgres

и все снова заработало, и жизнь была хорошей.


-3

Следующие шаги помогают мне:

brew удалить postgresql brew установить postgresql brew postgresql-upgrade-database

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.