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

166

После перезагрузки моего 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 из-за этой ошибки.

  • 0
    В качестве проверки работоспособности убедитесь, что на вашей машине запущен PG
  • 1
    Когда вы оставляете ответ, пожалуйста, попытайтесь объяснить, ПОЧЕМУ это происходит, или как работает система Postgres, чтобы мы не просто пытались что-то случайное.
Теги:
macos

18 ответов

317
Лучший ответ

ПРЕДУПРЕЖДЕНИЕ: Если вы удалите 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 думать, что он все еще работает даже после перезагрузки. Удаление этого файла разрешено. Надеюсь, это поможет другим! Многие люди имеют схожие проблемы, но большинство ответов связано с правами доступа к файлам, тогда как в моем случае все было по-другому.

  • 7
    надеюсь, этот ответ в конечном итоге поможет кому-то еще, и спасибо человеку, который проголосовал за него. Несмотря на то, что модератор отметил этот вопрос как дубликат, он уникален и полезен. Спасибо, переполнение стека за удивительный сайт и экспертов здесь для обмена!
  • 2
    Просто FWIW, удаление postmaster.pid опасно, вы должны быть уверены , что на самом деле нет postgres запущенных процессов , прежде чем сделать это.
Показать ещё 4 комментария
61

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

brew services restart postgresql

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

sudo service postgresql restart

sudo /etc/init.d/postgresql restart
  • 4
    У меня не сработало
  • 0
    Я перезапустил postgres, но все равно получил ту же ошибку.
58

Ничто из вышеперечисленного не помогло мне. Мне пришлось переустановить 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)
  • 4
    это правильный ответ! нужно больше голосов !!!
  • 1
    Другие ответы не сработали для меня. Это было варево, которое было немного сломано :) Спасибо.
Показать ещё 3 комментария
7

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

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

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

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

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

  • 3
    Я рад, что написал это. Еще один сбой и ответ может быть получен довольно быстро ...
7

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

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 как симпатичные таблицы данных.

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

  • 1
    Ключевым моментом здесь является добавление Postgres к вашему пути (шаг 2). Это помогло мне. Если вы установили Postgres с помощью Homebrew, вы можете добавить его в свой путь, добавив следующую строку в ваш .bash_profile: export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH - Сохранить в Обратите внимание, номер вашей версии может отличаться.
6

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

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

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

5

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

To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
  • 1
    оно работает! Спасибо
5

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

4

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

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

sudo /etc/init.d/postgres status

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

sudo /etc/init.d/postgres start
  • 0
    Спасибо за ответ, ваш ответ помог мне решить эту проблему с некоторыми изменениями: sudo /etc/init.d/postgresql start
3

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

3

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

Я добавил:

127.0.0.1 localhost

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

1

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

/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 и это наконец работает!

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

0

Я не совсем уверен, почему, но моя установка 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 мне очень помогло. Ненавижу читать ответы типа "Вставь, это работает!" потому что я не знаю, что, черт возьми, происходит и почему.

0

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

0

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

0

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

0

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

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

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

0

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

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

$top

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

$kill pid_number

Ещё вопросы

Сообщество Overcoder
Наверх
Меню