Postgres - не вдалося створити жодні сокети TCP / IP


14

Я запускаю додаток для рейок у розробці з 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?

Я не думав, що це було раніше. Перезапуск постгресів завжди вирішував проблему. Тому я побіг 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. Однак зараз питання, чому місцевий хост вважається таким, 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

будь-який вихід з sudo netstat -anlp | grep 5432?
Flup

1
Якщо ви збираєтеся окуповувати свої дані, будь ласка, зробіть це відповідально і використовуйте example.comяк доменне ім’я.
Дженні Д

Відповіді:


12

Ваш /etc/hostsзламаний. Перший рядок слід прочитати

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

Примітка для читачів в майбутньому , що навіть якщо ви робите є запис LOCALHOST в /etc/hostsрізні інші чинники можуть призвести до іншої відповідь DNS , коли DNS пошук в localhostдійсності виконуються. Дивіться stackoverflow.com/a/47824848/5419599 .
Wildcard

@Wildcard Я не знаю, для якої ОС ця відповідь застосовна (якщо така є). Це, звичайно, не має особливого сенсу в Linux.
kasperd

1
@kasperd Я думаю, якщо ви отримаєте замовлення dns filesзамість files dnsnsswitch.conf і маєте сервер імен, який вирішує localhost, ви можете потрапити в проблеми. Але це здається мені дуже малоймовірним ...
Дженні Д

@JennyD Відповідь, зв'язану вище, пропонує використовувати nslookupдля перевірки. Але nslookupкоманду в Linux не використовують nsswitch.confі /etc/hostsв першу чергу. А що стосується введення dns filesконфігурації, то це звучить як запит на мене.
kasperd

1
@kasperd Погодився - це було б досить високо за шкалою "це - сам-проклятий-винен" ...
Дженні Д

0

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

Якщо це так, спробуйте зупинити це:
brew services stop postgres

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.