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 следующим образом:
Ответ 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
Это должно работать;)
Ответ 22
Это работает для меня:
pg_ctl -D /usr/local/var/[email protected] stop;
brew services stop [email protected];
brew services start [email protected];