Назад | Перейти на главную страницу

Postgres - не удалось создать сокеты TCP / IP

Я запускаю приложение rails в разработке с postgresql 9.3. Когда я сегодня попытался запустить пассажирский сервер, то получил:

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

Ничего страшного, я подумал, что это случилось раньше Перезапуск postgres всегда решал проблему. Так что я побежал sudo service postgresql restart и получил:

 * Restarting PostgreSQL 9.3 database server
 * The PostgreSQL server failed to start. Please check the log output:
2014-06-11 10:32:41 CEST LOG:  could not bind IPv4 socket: Cannot assign requested address
2014-06-11 10:32:41 CEST HINT:  Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2014-06-11 10:32:41 CEST WARNING:  could not create listen socket for "localhost"
2014-06-11 10:32:41 CEST FATAL:  could not create any TCP/IP sockets
...fail!

Мой postgresql.conf указывает на значения по умолчанию: localhost и порт 5432. Я попытался изменить порт, но сообщение об ошибке осталось прежним (за исключением изменения порта).

Обе ps aux | grep postgresql и ps aux | grep postmaster ничего не вернуть.

РЕДАКТИРОВАТЬ:

В postgresql.conf Я изменился listen_addresses к 127.0.0.1 вместо того localhost и это сработало, сервер перезапустился. Мне также пришлось отредактировать конфигурацию db моих приложений и указать на 127.0.0.1 вместо того localhost. Однако теперь возникает вопрос, почему localhost считается 217.74.65.145 и нет 127.0.0.1?

Это мое /etc/hosts:

127.0.0.1   local
127.0.1.1   jacek-X501A1
127.0.0.1   something.name.non.example.com
127.0.0.1   company.something.name.non.example.com

Ваш /etc/hosts сломан. В первой строке следует читать

127.0.0.1   localhost something.name.non.example.com company.something.name.non.example.com

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

Если это так, попробуйте остановить это:
brew services stop postgres