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 из-за этой ошибки.
31 ответ
ВНИМАНИЕ: Если вы удалите postmaster.pid, не убедившись, что postgres
процессы, запускающие вас, могут навсегда повредить вашу базу данных. (PostgreSQL должен удалить его автоматически, если почтмейстер вышел.).
РЕШЕНИЕ: Это решило проблему - я удалил этот файл, и тогда все заработало!
/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 думать, что его процессы все еще работали даже после перезагрузки. Удаление этого файла решено. Надеюсь, что это помогает другим! У многих людей есть похожие проблемы, но большинство ответов было связано с правами доступа к файлам, тогда как в моем случае все было иначе.
Ничто из вышеперечисленного не помогло мне. Мне пришлось переустановить Postgres следующим образом:
- Удалите postgresql с помощью brew:
brew uninstall postgresql
brew doctor
(исправить все, что здесь)brew prune
Удалить все папки 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
)
Если вы используете MacOS и установили postgres через homebrew, попробуйте перезапустить его с
brew services restart postgresql
Если вы используете Ubuntu, вы можете перезапустить его любой из этих команд
sudo service postgresql restart
sudo /etc/init.d/postgresql restart
Может быть, это не связано, но похожая ошибка появляется при обновлении postgre
к основной версии, используя brew
; с помощью brew info postgresql
выяснил это, что помогло:
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
Вот мой путь:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm /usr/local/var/postgres/postmaster.pid
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Следующие команды выручили меня. Проблема была в версии данных PostgreSQL. После обновления все стало нормально работать.
brew upgrade postgresql
brew postgresql-upgrade-database
brew services restart postgresql
Если твой postmaster.pid
ушел, и вы не можете перезапустить или что-то еще, сделайте это:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
как объяснено здесь изначально
Другой класс причин, по которым это может произойти, связан с обновлениями версии Postgres.
Вы можете подтвердить, что это проблема, посмотрев журналы postgres:
tail -n 10000 /usr/local/var/log/postgres.log
и видя такие записи:
DETAIL: The data directory was initialized by PostgreSQL version 12, which is not compatible with this version 13.0.
В этом случае (если вы работаете на Mac и используете
brew
), просто беги:
brew postgresql-upgrade-database
(Как ни странно, он потерпел неудачу в первом прогоне и работал во втором прогоне, поэтому попробуйте дважды, прежде чем сдаваться)
Для меня решение было просто перезагрузить компьютер. Сначала я попытался перезапустить сервисы Brew, и когда это не сработало, перезапуск показался мне лучшим вариантом, прежде чем искать некоторые из более сложных решений. Все заработало как надо после.
Привет, мир:)
Лучший, но странный способ для меня - делать следующие вещи.
1) Загрузите http://postgresapp.com/ или другую версию. Добавьте это приложение в папку /Applications/.
2) Добавить строку (команду) в файл .bash_profile
(который находится в моем домашнем каталоге):
экспорт PATH=/ Приложения /Postgres93.app/ Содержание /MacOS/bin/:$PATHЭто путь к
psql
от Postgres93.app
, Строка (команда) запускается каждый раз при запуске консоли.3) Запустить Postgres93.app
от /Applications/
папка. Он запускает локальный сервер (порт "5432", а хост "localhost").
4) После всех этих манипуляций я был рад бежать $ createuser -SRDP user_name
и другие команды и посмотреть, что это работает! Postgres93.app
можно заставить работать каждый раз, когда ваша система запускается.
5) Также, если вы хотите увидеть свои базы данных в графическом виде, вы должны установить PG Commander.app
, Это хороший способ увидеть вашу базу данных postgres как красивые таблицы данных
Конечно, это полезно только для локального сервера. Я буду рад, если эта инструкция поможет другим, кто столкнулся с этой проблемой.
Эта проблема имеет много источников и, следовательно, много ответов. Я испытал каждый из них.
1) Если вы столкнулись с каким-либо сбоем, возможно, необходимо удалить файл /usr/local/var/postgres/postmaster.pid, поскольку postgres, возможно, не обработал его должным образом. Но убедитесь, что ни один процесс не запущен.
2) Крейг Рингер в других статьях отмечал, что связывание Apple postgreSQL приводит к проблемам с установкой pg gem. Установка переменной среды PATH является решением.
3) Другое решение, это удалить и переустановить драгоценный камень. Также может потребоваться обновление варева.
Если вы наткнетесь на этот пост, если вы сможете точно определить один из источников, вы сэкономите время...
Я столкнулся с подобной проблемой здесь, я решил эту проблему, как показано ниже.
На самом деле процесс postgres мертв, чтобы увидеть состояние postgres, выполните следующую команду
sudo /etc/init.d/postgres status
Это говорит о том, что процесс мертв, просто начните процесс
sudo /etc/init.d/postgres start
Я была такая же проблема. В большинстве случаев проблема заключается в том, что существует оставшийся файл
/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
и это наконец работает!
Я записываю это, потому что это может быть решением для кого-то другого
Для тех, кто сталкивается с этой проблемой на компьютерах Mac M1, попробуйте удалить этот файл, а затем перезапустить службу варки:
rm /opt/homebrew/var/postgres/postmaster.pid
Это случилось со мной после того, как мой Mac (High Sierra) замерз, и мне пришлось вручную перезапустить его (нажмите и удерживайте кнопку питания). Все, что я должен был сделать, чтобы это исправить, это сделать чистый перезапуск.
Я столкнулся с той же проблемой для
psql (PostgreSQL) 9.6.11
.
что сработало для меня -
удалить postmaster.pid -
rm /usr/local/var/postgresql@9.6/postmaster.pid
перезапустить postgres -
brew services restart postgresql@9.6
Если
postmaster.pid
не существует или вышеуказанный процесс не работает, затем запустите -
sudo chmod 700 /usr/local/var/postgresql@9.6
Я не совсем уверен, почему, но моя установка 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 мне очень помогло. Ненавижу читать ответы типа "Вставь, это работает!" потому что я не знаю, что, черт возьми, происходит и почему.
У меня была такая же проблема, и это было из-за несовместимой версии после обновления с версии 11 до 13.2.
Проверка журнала ошибок по адресу:
/usr/local/var/log/postgres.log
Показал мне:
DETAIL: The data directory was initialized by PostgreSQL version 11, which is not compatible with this version 13.2.
Чтобы исправить, я запустил:
brew postgresql-upgrade-database
А затем запустил postresql с пивом:
brew services start postgresql
Моя проблема закончилась тем, что я использовал Gas Mask (файловый менеджер hosts для Mac), и у меня не было записи для localhost в файле hosts, который я использовал.
Я добавил:
127.0.0.1 localhost
И это решило мою проблему.
У меня была такая же проблема при подключении, пытающемся запустить сервер базы данных PostgreSQL в MacOS Monterey .
Когда я запускаю команду ниже, чтобы перезапустить сервер базы данных PostgreSQL:
Он перезапускается, но когда я пытаюсь проверить состояние сервера базы данных PostgreSQL с помощью приведенной ниже команды, я получаю сообщение об ошибке:
Name Status User File
mysql started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
nginx started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
postgresql error 256 root ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Вот что сработало для меня :
Во-первых, я проверил файл журнала для сервера базы данных PostgreSQL, чтобы определить причину ошибки, используя следующую команду:
cat /usr/local/var/log/postgres.log
ИЛИ ЖЕ
nano /usr/local/var/log/postgres.log
Логи показали следующие ошибки:
"root" execution of the PostgreSQL server is not permitted.
The server must be started under an unprivileged user ID to prevent
possible system security compromise. See the documentation for
more information on how to properly start the server.
2022-01-25 19:01:06.051 WAT [29053] FATAL: database files are incompatible with server
2022-01-25 19:01:06.051 WAT [29053] DETAIL: The data directory was initialized by PostgreSQL version 13, which is not compatible with this version 14.1.
Для ошибки корневого выполнения мне пришлось запустить следующую команду, чтобы исправить права доступа к файлам, которые, когда мы испортили нас, когда я запускал
brew services
с
sudo
префикс команды. Заменять
your-username
с вашим именем пользователя MacOS (в моем случае мое имя пользователя было
promisepreston
:
# Stop postgresql
sudo brew services stop PostgreSQL
# In case service file is copied to ~/Library/LaunchAgents as well
brew services stop postgresql
# Fix permission of homebrew files
sudo chown -R your-username:admin $(brew --prefix)/*
Поскольку файлы базы данных несовместимы с сервером, мне пришлось просто обновить существующие файлы данных PostgreSQL, которые были созданы с использованием версии 13, до последней версии PostgreSQL на моем компьютере, которая была 14.1, выполнив следующую команду ниже:
brew postgresql-upgrade-database
После чего я перезапустил сервер базы данных PostgreSQL:
brew services restart PostgreSQL
А затем проверил статус с помощью команды ниже:
brew services list
Затем я получил вывод ниже, показывающий, что все работает нормально:
Name Status User File
mysql started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
nginx started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.nginx.plist
postgresql started promisepreston ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Это все.
Просто добавлю сюда свое решение, раз уж у меня была аналогичная ошибка
Все это делается из командной строки (нет
sudo
коды вообще)
- Я подтвердил, что у меня установлен PostgreSQL
psql -V
(это заглавная буква "V", кстати) - Я попытался подключиться к серверу:
ЭТО ГДЕ Я ОПЫТАЛ ОШИБКУ ЭТОГО ВОПРОСА
После некоторого исследования возможных исправлений у меня, очевидно, был установлен PostgreSQL, но у меня не было сервера по умолчанию.
Что мне нужно было сделать, так это создать каталог пользовательских данных.
Насколько я могу судить, создание каталога пользовательских данных - это то же самое, что и наличие сервера по умолчанию.
Поскольку это новая машина (macBook pro 2021 с чипом apple m1), я хотел найти самое простое возможное решение, и я считаю, что этот каталог пользовательских данных - это именно то, что вам нужно. Остальные шаги по устранению этой проблемы заключаются в следующем:
- Из домашнего каталога я создал пустой каталог
mkdir myData
- Из домашнего каталога инициализировал сервер:
initdb myData
(закидывает кучу файлов в каталог myData) -
pg_ctl -D myData -l logfile start
(запускает сервер) -
psql postgres
(подключается к серверу)
Итак, как новичок в PostgreSQL, базах данных и SQL в целом, пара замечаний:
- Можно "выйти" из соединения с сервером, используя
\q
(при подключении к серверу также можно набрать «помощь») - Также возможно "остановить" сервер, также с помощью
pg_ctl -D myData stop
На данный момент я уверен, что у меня установлен PostgreSQL, есть сервер, который я могу запускать и останавливать, и имею возможность подключаться / отключаться от этого сервера.
Если что-то из этого "плохо", дайте мне знать.
Причин этой ошибки много, поэтому сначала найдите файл журнала и проверьте его на наличие улик. Это может быть в /usr/local/var/log/postgres.log
или же /usr/local/var/postgres/server.log
или, возможно, в другом месте. Если вы установили с Homebrew, вы можете найти расположение в ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
,
Перейти к /var/log/
и запустить кошку postgres.log
Здесь вы найдете причину сбоя postgres. Если это умный выключить, то, вероятно, ваш icu4c
версия (библиотека C++ для Unicode) неверна, что связано с postgres
, Итак, выполните следующие команды.
brew upgrade
brew cleanup
Это должно работать;)
После некоторых поисков я нашел похожую проблему и простой ответ, который сработал: просто "обновите свой существующий до новой версии с помощью следующей команды":
brew postgresql-upgrade-database
Я просто получил ту же проблему, что и мою машину (ubuntu
) для обновления и попала ниже ошибка:
не удалось подключиться к серверу: нет такого файла или каталога. Сервер работает локально и принимает подключения через сокет домена Unix "/var/run/postgresql/.s.PGSQL.5432"?
После завершения процесса обновления при перезапуске моя системная ошибка исчезла. И он работает как шарм, как и раньше... Я думаю, это произошло, когда pg обновлялся, и начался другой процесс.
SUPER NEWBIE ALERT: Я только изучаю веб-разработку и конкретное руководство, за которым я следовал, упомянуло, что я должен установить Postgres, но на самом деле не упомянул, что мне нужно его запускать... Как только я открыл приложение Postgres, все было хорошо и денди.
Этот ответ сработал для меня: /questions/26320050/postgresql-ne-mozhet-podklyuchitsya-k-serveru-net-takogo-fajla-ili-kataloga/26320058#26320058 в моей системе Ubuntu.
Команда:
sudo service postgresql restart
.
Ответ @Jagdish Barabari дал мне подсказку, необходимую для решения этой проблемы. Оказалось, что были установлены две версии postgresql, пока работала только одна. Очистка всех файлов postgresql и переустановка последней версии решили эту проблему для меня.
brew postgresql-upgrade-database, обновленная с версии 13 до 14, у меня сработало.
Мне пришлось искать этот пост несколько раз, чтобы решить эту проблему. Есть еще одно исправление, которое также относится к аналогичным проблемам с другими запущенными программами.
Я только что обнаружил, что вы можете использовать следующие две команды.
$ сверху
Это покажет все текущие действия с их номерами pid. Когда вы найдете postgres и связанный pid
$ kill pid_number