Theo thông báo lỗi, psql
lệnh xuất hiện đầu tiên trong $PATH
có /tmp
làm thư mục ổ cắm unix mặc định được mã hóa cứng.
Vì thư mục thực trên thực tế là /var/pgsql_socket
, bạn nên nói với nó một cách rõ ràng thay vì dựa vào mặc định:
$ psql -h /var/pgsql_socket [other options]
Điều tương tự cũng áp dụng cho các lệnh phía máy khách khác như createdb
, dropdb
, createuser
...
Nếu bạn không muốn chỉ định -h
mỗi lần, nó có thể được đưa vào PGHOST
biến môi trường.
Một số người cũng giải quyết vấn đề này bằng cách sử dụng kết nối TCP tới localhost
thay vì sử dụng thư mục Unix socket.
Nguyên nhân gốc rễ của vấn đề này là sau khi cài đặt PostgreSQL trên Mac OS X, hệ thống sẽ có hai phiên bản khác nhau của tập khách hàng postgres (libpq
thư viện, psql
và các tiện ích liên quan khác), một tiện ích đi kèm với MacOS và tiện ích khác đi kèm với trình cài đặt PostgreSQL.
Do đó, một phương pháp khác là thay đổi $PATH
của bạn để psql
được cài đặt với PostgreSQL được chọn trước khi cài đặt với hệ thống (có lẽ là /usr/bin/psql
).