После перезагрузки моего 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 из-за этой ошибки.
ПРЕДУПРЕЖДЕНИЕ: Если вы удалите 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 думать, что он все еще работает даже после перезагрузки. Удаление этого файла разрешено. Надеюсь, это поможет другим! Многие люди имеют схожие проблемы, но большинство ответов связано с правами доступа к файлам, тогда как в моем случае все было по-другому.
postgres
запущенных процессов , прежде чем сделать это.
Если вы используете MacOS и установили postgres через homebrew, попробуйте перезапустить его с
brew services restart postgresql
Если вы используете Ubuntu, вы можете перезапустить его любой из этих команд
sudo service postgresql restart
sudo /etc/init.d/postgresql restart
Ничто из вышеперечисленного не помогло мне. Мне пришлось переустановить Postgres следующим образом:
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
)Эта проблема имеет много источников и, следовательно, множество ответов. Я испытал каждого из них.
1) Если у вас есть какой-то сбой, удаление файла /usr/local/var/postgres/postmaster.pid, возможно, требуется, поскольку postgres, возможно, не справились с ним должным образом. Но убедитесь, что процесс не запущен.
2) Крейг Рингер указал в других сообщениях, что Apple, связанная с postgreSQL, приводит к проблемам установки pg gem Установка переменной среды PATH является решением.
3) Еще одно решение - удалить и переустановить камень. Возможно, потребуется обновление brew.
Если вы наткнетесь на этот пост, если вы можете определить один из источников, вы сэкономите время...
Привет, мир:)
Лучшим, но странным для меня способом было сделать следующее.
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 как симпатичные таблицы данных.
Конечно, это полезно только для локального сервера. Я буду рад, если эта инструкция поможет другим, кто столкнулся с этой проблемой.
export PATH='/usr/local/Cellar/postgresql/9.4.1/bin/':$PATH
- Сохранить в Обратите внимание, номер вашей версии может отличаться.
если ваш postmaster.pid
ушел, и вы не можете перезапустить или что-то еще, сделайте следующее:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
как объяснено здесь изначально
Возможно, это не связано, но похожая ошибка появляется при обновлении postgre
до основной версии с использованием brew
; используя brew info postgresql
обнаружил, что это помогло:
To migrate existing data from a previous major version of PostgreSQL run:
brew postgresql-upgrade-database
Для меня решение было просто перезагрузить компьютер. Сначала я попробовал перезапуск с помощью служб Brew, и когда это не помогло, перезагрузка показалась следующей лучшей возможностью попробовать, прежде чем рассматривать некоторые из наиболее востребованных решений. После этого все работало так, как должно было.
У меня возникла аналогичная проблема. Я решил эту проблему, как показано ниже.
На самом деле процесс postgres мертв, чтобы увидеть статус postgres, выполните следующую команду
sudo /etc/init.d/postgres status
Будет сказано, что процесс мертв. Просто запустите процесс
sudo /etc/init.d/postgres start
Это случилось со мной после того, как мой Mac (High Sierra) застыл, и мне пришлось вручную перезапустить его (нажмите и удерживайте кнопку питания). Все, что я должен был сделать, чтобы исправить это, - это сделать чистый перезапуск.
Моя проблема закончилась тем, что я использовал Gas Mask (файловый менеджер хостов для Mac), и у меня не было записи для localhost в файле hosts, который я использовал.
Я добавил:
127.0.0.1 localhost
И это решило мою проблему.
Я была такая же проблема. В большинстве случаев проблема заключается в том, что существует оставшийся файл
/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
и это наконец работает!
Я записываю это, потому что это может быть решением для кого-то другого
Я не совсем уверен, почему, но моя установка 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 мне очень помогло. Ненавижу читать ответы типа "Вставь, это работает!" потому что я не знаю, что, черт возьми, происходит и почему.
Причин этой ошибки много, поэтому сначала найдите файл журнала и проверьте его на наличие улик. Это может быть в /usr/local/var/log/postgres.log
или /usr/local/var/postgres/server.log
или, возможно, в другом месте. Если вы установили Homebrew, вы можете найти его в ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
.
@Ответ Джагдиша Барабари дал мне ключ, который мне нужно было решить. Оказывается, были установлены две версии postgresql, в то время как только один был запущен. Очистка всех файлов postgresql и переустановка последней версии разрешили эту проблему для меня.
SUPER NEWBIE ALERT: Я просто изучаю веб-разработку и конкретный учебник, о котором я говорил, я должен установить Postgres, но на самом деле не упоминал, что мне нужно запустить его... Как только я открыл приложение Postgres, все было в порядке и dandy.
У меня возникла такая же проблема, как и моя машина (ubuntu
) для обновления и получилась ниже ошибки:
не удалось подключиться к серверу: такой файл или каталог не является сервером выполняется локально и принимает соединения в сокетном домене Unix "/var/run/postgresql/.s.PGSQL.5432"?
После завершения процесса обновления, когда я перезапущу системную ошибку, ушел. И его работа как прелесть, как и раньше. Я думаю, это произошло, когда pg обновлялся, и начался другой процесс.
Мне пришлось искать этот пост несколько раз, чтобы решить эту проблему. Там есть еще одно исправление, которое также относится к аналогичным проблемам с другими запущенными программами.
Я только что обнаружил, что вы можете использовать следующие две команды.
$top
Это покажет все текущие действия с их номерами pid. Когда вы найдете postgres и связанные с ним pid
$kill pid_number