Postgres - không thể tạo bất kỳ ổ cắm TCP / IP nào


14

Tôi đang chạy một ứng dụng rails đang được phát triển với postgresql 9.3. Khi tôi cố gắng khởi động máy chủ hành khách ngày hôm nay, tôi đã nhận được:

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?

Không có vấn đề lớn tôi nghĩ, điều đó đã xảy ra trước đây. Khởi động lại postgres luôn giải quyết vấn đề. Vì vậy, tôi đã chạy sudo service postgresql restartvà nhận được:

 * 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Điểm của tôi đến mặc định: localhostvà cổng 5432. Tôi đã thử thay đổi cổng nhưng thông báo lỗi là như nhau (ngoại trừ thay đổi cổng).

Cả hai ps aux | grep postgresqlps aux | grep postmasterkhông trả lại gì cả.

BIÊN TẬP:

Trong postgresql.conftôi đã thay đổi listen_addressesthành 127.0.0.1thay vì localhostvà nó đã thực hiện thủ thuật, máy chủ đã khởi động lại. Tôi cũng đã phải chỉnh sửa cấu hình db của ứng dụng và trỏ đến 127.0.0.1thay vì localhost. Tuy nhiên, câu hỏi là bây giờ, tại sao localhost được coi là 217.74.65.145và không 127.0.0.1?

Đó là của tôi /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

đầu ra sudo netstat -anlp | grep 5432nào?
Flup

1
Nếu bạn định làm xáo trộn dữ liệu của mình, vui lòng thực hiện một cách có trách nhiệm và sử dụng example.comlàm tên miền.
Jenny D

Câu trả lời:


12

Của bạn /etc/hostsbị hỏng Dòng đầu tiên nên đọc

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

Lưu ý cho độc giả trong tương lai mà ngay cả khi bạn làm có một mục localhost trong /etc/hosts, nhiều yếu tố khác có thể gây ra một phản ứng hoàn toàn DNS khác nhau khi một tra cứu DNS của localhostđang thực sự chạy. Xem stackoverflow.com/a/47824848/5419599 .
tự đại diện

@Wildcard Tôi không biết câu trả lời nào sẽ được áp dụng cho (nếu có). Nó chắc chắn không có nhiều ý nghĩa trên Linux.
kasperd

1
@kasperd Tôi cho rằng nếu bạn đã nhận được đơn đặt hàng dns filesthay vì files dnstrong nsswitch.conf có một máy chủ tên giải quyết localhost, bạn có thể gặp rắc rối. Nhưng điều đó nghe có vẻ khó xảy ra với tôi ...
Jenny D

@JennyD Câu trả lời được liên kết ở trên gợi ý sử dụng nslookupđể xác minh. Nhưng nslookuplệnh trên Linux không sử dụng nsswitch.conf/etc/hostsở vị trí đầu tiên. Và như để đưa dns filesvào cấu hình, điều đó nghe có vẻ như gây rắc rối cho tôi.
kasperd

1
@kasperd Đồng ý - nó sẽ khá cao trên thang điểm "đó là lỗi của riêng bạn"
Jenny D

0

Tôi hiểu rằng câu hỏi này đã được trả lời, nhưng đối với những người vẫn còn lỗi, lý do có thể là một số quy trình khác đã bắt đầu nó. Ví dụ Homebrewvề khởi động hệ thống.

Nếu đó là trường hợp cố gắng ngăn chặn nó:
brew services stop postgres

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.