Сервер работает на хосте "localhost" (:: 1) и принимает соединения TCP/IP на порту 5432?

Прежде всего, обратите внимание, что я нашел несколько похожих вопросов о переполнении стека и статей по всему Интернету, но ни один из них не помог мне исправить мою проблему:

Теперь, вот проблема:

  • У меня есть приложение Rails, которое работает как шарм.
  • С моим сотрудником мы используем GitHub для совместной работы.
  • У нас есть ветки master и mvp.
  • Недавно я обновил версию git с помощью Homebrew (Mac).
  • Мы используем Foreman для запуска нашего приложения локально.

Теперь, когда я пытаюсь запустить приложение локально, я получаю следующую ошибку:

PG::ConnectionBad at /
could not connect to server: Connection refused
    Is the server running on host "localhost" (::1) and accepting
    TCP/IP connections on port 5432?
could not connect to server: Connection refused
    Is the server running on host "localhost" (127.0.0.1) and accepting
    TCP/IP connections on port 5432?

Я пытался несколько раз перезагружать компьютеры.

Я также проверил содержимое /usr/local/var/postgres:

PG_VERSION      pg_dynshmem     pg_multixact    pg_snapshots    pg_tblspc       postgresql.conf
base            pg_hba.conf     pg_notify       pg_stat         pg_twophase     postmaster.opts
global          pg_ident.conf   pg_replslot     pg_stat_tmp     pg_xlog         server.log
pg_clog         pg_logical      pg_serial       pg_subtrans     postgresql.auto.conf

Как вы можете видеть, там нет файла postmaster.pid.

Любая идея, как я мог это исправить?

Ответ 1

У вас, скорее всего, закончилась батарея, и ваш сервер postgresql не выключился правильно.

Самое легкое обходное решение - загрузить официальное приложение postgresql и запустить его: он заставит сервер запуститься (http://postgresapp.com/)

Ответ 2

запустите postgres -D/usr/local/var/postgres и вы должны увидеть что-то вроде:

 FATAL:  lock file "postmaster.pid" already exists
 HINT:   Is another postmaster (PID 379) running in data directory "/usr/local/var/postgres"?

Затем запустите kill -9 PID в подсказке

И тебе должно быть хорошо идти.

Ответ 3

Скорее всего это из-за неожиданного отключения вашей системы

Try

postgres -D /usr/local/var/postgres

Вы можете увидеть

FATAL:  lock file "postmaster.pid" already exists
HINT:  Is another postmaster (PID 449) running in data directory "/usr/local/var/postgres"?

Затем попробуйте

kill -9 PID

Пример

kill -9 419

И он должен начинать postgres обычно

Ответ 4

Это может быть так просто, как служба postgresql. Попробуйте запустить:

sudo service postgresql start

который исправил эту проблему для меня.

Ответ 5

Это сработало в моем случае:

brew uninstall postgresql
rm -fr /usr/local/var/postgres/
brew install postgresql

Ответ 6

Это может быть связано с тем, что pid файл, созданный для postgress, не был удален из-за неожиданного завершения работы. Чтобы исправить это, удалите этот файл pid.

  1. Найдите каталог данных postgres. На MAC, использующем homebrew, это /usr/local/var/postgres/, в других системах это может быть /usr/var/postgres/

  2. Удалить файл pid

    рм postmaster.pid

  3. Перезапустите postgress. На Mac,

    brew services restart postgresql

Ответ 7

Я решил проблему с помощью этой команды

pg_ctl -D /usr/local/var/postgres start

Иногда вы можете получить эту ошибку

pg_ctl: another server might be running; trying to start server anyway

Итак, попробуйте выполнить следующую команду, а затем выполните первую команду, указанную выше.

pg_ctl -D /usr/local/var/postgres stop

Ответ 8

У меня была почти такая же ошибка с моим приложением Ruby on Rails, работающим с postgresql (mac). Это сработало для меня:

brew services restart postgresql

Ответ 9

Если вы хотите перезапустить Postgresql в Linux, вам необходимо использовать следующую команду.

/etc/init.d/postgresql restart

Ответ 10

Я часто сталкиваюсь с этой проблемой в Windows, так как я решил проблему - Service - щелкните PostgreSQL Database Server 8.3 - щелкните вторую вкладку "войти" - выберите первую строку "локальная системная учетная запись".

Ответ 11

Это сработало для меня: пробег

sudo lsof -i :<port_number>

после этого он отобразит PID, который в настоящее время подключен к процессу.

После этого выполните sudo kill -9 <PID>

если это не работает, попробуйте решение, предлагаемое user8376606, это определенно сработает!

Ответ 12

Сначала я попробовал

lsof -wni tcp: 5432 но он не показывает номер PID.

Во-вторых, я попробовал

Postgres -D/usr/local/var/postgres и это показало, что сервер слушает.

Поэтому я просто перезапустил свой Mac, чтобы восстановить все порты обратно, и это сработало для меня.

Ответ 13

Для пользователей Docker: в моем случае это было вызвано чрезмерным размером изображения Docker. Вы можете удалить неиспользуемые данные с помощью команды prune:

docker system prune --all --force --volumes

Предупреждение: согласно руководству (docker system prune --help):

Это удалит:

  • все остановленные контейнеры
  • все сети не используются хотя бы одним контейнером
  • все висячие изображения
  • весь свисающий кеш сборок