Lỗi nói rằng tiện ích psql không thể tìm thấy ổ cắm để kết nối với máy chủ cơ sở dữ liệu của bạn. Bạn không có dịch vụ cơ sở dữ liệu đang chạy trong nền hoặc ổ cắm nằm ở nơi khác hoặc có thể là pg_hba.conf
cần được sửa.
Bước 1:Xác minh rằng cơ sở dữ liệu đang chạy
Lệnh có thể khác nhau tùy thuộc vào hệ điều hành của bạn. Nhưng trên hầu hết các hệ thống * ix, tính năng sau sẽ hoạt động, nó sẽ tìm kiếm các postgres trong số tất cả các quy trình đang chạy
ps -ef | grep postgres
Trên hệ thống của tôi, mac osx, điều này xuất hiện
501 408 1 0 2Jul15 ?? 0:21.63 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
Cột cuối cùng hiển thị lệnh được sử dụng để khởi động máy chủ và các tùy chọn.
Bạn có thể xem xét tất cả các tùy chọn có sẵn để khởi động máy chủ postgres bằng cách sử dụng như sau.
man postgres
Từ đó, bạn sẽ thấy rằng các tùy chọn -D
và -r
tương ứng là datadir
&logfilename
.
Bước 2:Nếu dịch vụ postgres đang chạy
Sử dụng find
để tìm kiếm vị trí của ổ cắm, vị trí này phải ở đâu đó trong /tmp
sudo find /tmp/ -name .s.PGSQL.5432
Nếu postgres đang chạy và chấp nhận kết nối ổ cắm, phần trên sẽ cho bạn biết vị trí của ổ cắm. Trên máy của tôi, hóa ra là:
/tmp/.s.PGSQL.5432
Sau đó, hãy thử kết nối qua psql bằng cách sử dụng vị trí của tệp này một cách rõ ràng, ví dụ:
psql -h /tmp/ dbname
Bước 3:Nếu dịch vụ đang chạy nhưng bạn không thấy ổ cắm
Nếu bạn không thể tìm thấy ổ cắm, nhưng thấy rằng dịch vụ đang chạy, hãy xác minh rằng tệp pg_hba.conf cho phép ổ cắm cục bộ.
Duyệt đến datadir
và bạn sẽ tìm thấy pg_hba.conf
tệp.
Theo mặc định, ở gần cuối tệp, bạn sẽ thấy các dòng sau:
# "local" is for Unix domain socket connections only
local all all trust
Nếu bạn không nhìn thấy nó, bạn có thể sửa đổi tệp và khởi động lại dịch vụ postgres.