Psql: не удалось подключиться к серверу: нет такого файла или каталога (Mac OS X)

После перезагрузки моего Mac я получил ужасную ошибку Postgres:

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

Причина этого в том, что мой macbook полностью застыл из-за несвязанной проблемы, и мне пришлось сделать жесткую перезагрузку с помощью кнопки питания. После перезагрузки я не смог запустить Postgres из-за этой ошибки.

Ответ 1

ПРЕДУПРЕЖДЕНИЕ: Если вы удалите postmaster.pid, не убедившись, что на самом деле нет процессов postgres, которые могут работать с вами, может навсегда повредить вашу базу данных. (PostgreSQL должен удалить его автоматически, если postmaster завершил.).

РЕШЕНИЕ: Это устранило проблему - я удалил этот файл, а потом все сработало!

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

-

и вот как я понял, почему это нужно удалить.

  • Я использовал следующую команду, чтобы проверить, были ли запущены процессы PG. для меня их не было, я даже не мог запустить PG-сервер:

    ps auxw | grep post
    
  • Я искал файл .s.PGSQL.5432, который был в сообщении об ошибке выше. Я использовал следующую команду:

    sudo find / -name .s.PGSQL.5432 -ls
    

    это не показало ничего после поиска на моем компьютере, поэтому файл не существовал, но, очевидно, psql "хотел" или "думал, что он там".

  • Я просмотрел журналы своего сервера и увидел следующую ошибку:

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

    в конце журнала сервера я вижу следующую ошибку:

    FATAL:  pre-existing shared memory block (key 5432001, ID 65538) is still in use
    HINT:  If you're sure there are no old server processes still running, remove the shared memory block or just delete the file "postmaster.pid".
    
  • Следуя советам в сообщении об ошибке, я удалил файл postmaster.pid в том же каталоге, что и server.log. Это решило проблему, и я смог перезапустить.

Итак, кажется, что мой macbook, зависающий и перезагруженный, заставил Postgres думать, что он все еще работает даже после перезагрузки. Удаление этого файла разрешено. Надеюсь, это поможет другим! Многие люди имеют схожие проблемы, но большинство ответов связано с правами доступа к файлам, тогда как в моем случае все было по-другому.

Ответ 2

Ничто из вышеперечисленного не помогло мне. Мне пришлось переустановить Postgres следующим образом:

  • Удалите postgresql с помощью brew: brew uninstall postgresql
  • brew doctor (исправить все, что здесь)
  • brew cleanup
  • Удалить все папки Postgres:

    • rm -r/usr/local/var/postgres
    • rm -r/Users/<username>/Library/Application\ Support/Postgres
  • Переустановите postgresql с помощью brew: brew install postgresql

  • Запустить сервер: brew services start postgresql
  • Теперь вы должны создать свои базы данных... (createdb)

Ответ 3

Если вы используете MacOS и установили postgres через homebrew, попробуйте перезапустить его с

brew services restart postgresql

Если вы используете Ubuntu, вы можете перезапустить его любой из этих команд

sudo service postgresql restart

sudo /etc/init.d/postgresql restart

Ответ 4

Возможно, это не связано, но похожая ошибка появляется при обновлении postgres до основной версии с использованием brew; используя brew info postgresql обнаружил, что это помогло:

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database

Ответ 5

если ваш postmaster.pid ушел, и вы не можете перезапустить или что-то еще, сделайте следующее:

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

как объяснено здесь изначально

Ответ 6

Привет, мир:)
Лучшим, но странным для меня способом было сделать следующее.

1) Загрузите postgres93.app или другую версию. Добавьте это приложение в папку /Applications/.

2) Добавьте строку (команду) в файл .bash_profile (который находится в моем домашнем каталоге):

export PATH=/Applications/Postgres93.app/Contents/MacOS/bin/:$PATH
Это значение PATH для psql из Postgres93.app. Строка (команда) запускается каждый раз при запуске консоли.

3) Запустите папку Postgres93.app из /Applications/. Он запускает локальный сервер (порт "5432", а хост - "localhost" ).

4) После всех этих манипуляций я был рад запустить $ createuser -SRDP user_name и другие команды и убедиться, что он сработает! Postgres93.app можно запускать при каждом запуске системы.

5) Также, если вы хотите графически увидеть свои базы данных, вы должны установить PG Commander.app. Это хороший способ увидеть вашу базу данных postgres как симпатичные таблицы данных.

Конечно, это полезно только для локального сервера. Я буду рад, если эта инструкция поможет другим, кто столкнулся с этой проблемой.

Ответ 7

Эта проблема имеет много источников и, следовательно, множество ответов. Я испытал каждого из них.

1) Если у вас есть какой-то сбой, удаление файла /usr/local/var/postgres/postmaster.pid, возможно, требуется, поскольку postgres, возможно, не справились с ним должным образом. Но убедитесь, что процесс не запущен.

2) Крейг Рингер указал в других сообщениях, что Apple, связанная с postgreSQL, приводит к проблемам установки pg gem Установка переменной среды PATH является решением.

3) Еще одно решение - удалить и переустановить камень. Возможно, потребуется обновление brew.

Если вы наткнетесь на этот пост, если вы можете определить один из источников, вы сэкономите время...

Ответ 8

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

Ответ 9

У меня возникла аналогичная проблема. Я решил эту проблему, как показано ниже.

На самом деле процесс postgres мертв, чтобы увидеть статус postgres, выполните следующую команду

sudo /etc/init.d/postgres status

Будет сказано, что процесс мертв. Просто запустите процесс

sudo /etc/init.d/postgres start

Ответ 10

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

Ответ 11

Моя проблема закончилась тем, что я использовал Gas Mask (файловый менеджер хостов для Mac), и у меня не было записи для localhost в файле hosts, который я использовал.

Я добавил:

127.0.0.1 localhost

И это решило мою проблему.

Ответ 12

Причин этой ошибки много, поэтому сначала найдите файл журнала и проверьте его на наличие улик. Это может быть в /usr/local/var/log/postgres.log или /usr/local/var/postgres/server.log или, возможно, в другом месте. Если вы установили Homebrew, вы можете найти его в ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist.

Ответ 13

Я не совсем уверен, почему, но моя установка Postgres была немного испорчена, и некоторые файлы были удалены, что приводит к ошибке OP.

Несмотря на то, что я могу запускать такие команды, как brew service retart postgres и видеть правильные сообщения, эта ошибка не исчезла.

Я просмотрел документацию postgres и обнаружил, что мой файл /usr/local/var/postgres был полностью пустым. Итак, я запустил следующее:

initdb /usr/local/var/postgres

Кажется, что некоторые конфигурации имели место с этой командой.

Затем он попросил меня запустить это:

postgres -D /usr/local/var/postgres

И это говорит мне, что файл postmaster.pid уже существует.

Мне просто нужно было знать, сможет ли brew подобрать конфиги, которые я только что запустил, поэтому я проверил это.

ls /usr/local/var/postgres

Это показал мне файл postmaster.pid. Затем я сделал brew services stop postgresql, и файл postmaster.pid исчез. Затем я сделал brew services start postgresql, и VIOLA, файл появился снова.

Затем я запустил свое приложение, которое фактически нашло сервер, однако мои базы данных, похоже, исчезли.

Хотя я знаю, что они могут вообще не исчезнуть - новая инициализация, которую я сделал, могла создать новую data_area, а на старую не указывать. Я должен был бы посмотреть, где это и указать на это, или просто снова создать свои базы данных.

Надеюсь это поможет! Чтение документации Postgres мне очень помогло. Ненавижу читать ответы типа "Вставь, это работает!" потому что я не знаю, что, черт возьми, происходит и почему.

Ответ 14

Я была такая же проблема. В большинстве случаев проблема заключается в том, что существует оставшийся файл

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

который работает для большинства людей, но мой случай был другим - я пытался погуглить эту проблему в течение последних 3 часов, удалил postresql на OSX через brew, очистил базу данных, ничего не помогло.

Наконец, я заметил, что у меня возникла проблема с brew, которая всякий раз, когда я пытался что-либо установить, высовывалась:

Error: Permission denied @rb_sysopen -/private/tmp/github_api_....

или что-то вроде этого в конце установки.

Я просто сделал sudo chmod -R 777/private/tmp и это наконец работает!

Я записываю это, потому что это может быть решением для кого-то другого

Ответ 15

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

Я только что обнаружил, что вы можете использовать следующие две команды.

$top

Это покажет все текущие действия с их номерами pid. Когда вы найдете postgres и связанные с ним pid

$kill pid_number

Ответ 16

У меня возникла такая же проблема, как и моя машина (ubuntu) для обновления и получилась ниже ошибки:

не удалось подключиться к серверу: такой файл или каталог не является сервером выполняется локально и принимает соединения в сокетном домене Unix "/var/run/postgresql/.s.PGSQL.5432"?

После завершения процесса обновления, когда я перезапущу системную ошибку, ушел. И его работа как прелесть, как и раньше. Я думаю, это произошло, когда pg обновлялся, и начался другой процесс.

Ответ 17

SUPER NEWBIE ALERT: Я просто изучаю веб-разработку и конкретный учебник, о котором я говорил, я должен установить Postgres, но на самом деле не упоминал, что мне нужно запустить его... Как только я открыл приложение Postgres, все было в порядке и dandy.

Ответ 18

@Ответ Джагдиша Барабари дал мне ключ, который мне нужно было решить. Оказывается, были установлены две версии postgresql, в то время как только один был запущен. Очистка всех файлов postgresql и переустановка последней версии разрешили эту проблему для меня.

Ответ 19

Я удалил /usr/lib из LD_LIBRARY_PATH, и это сработало. Я работал в Dockerfile Postgres: Alpine.

Ответ 20

После некоторых поисков я нашел похожую проблему и простой ответ, который сработал: просто "обновите свой существующий до новой версии с помощью следующей команды":

brew postgresql-upgrade-database

Благодаря ssamateh ответ на эту тему

Ответ 21

Перейдите в /var/log/ и запустите cat postgres.log Здесь вы найдете причину сбоя postgres. Если это умное завершение работы, то, вероятно, ваша версия icu4c (библиотека C++ для Unicode) неверна, что связано с postgres. Итак, выполните следующие команды.

brew upgrade brew cleanup Это должно работать;)