2012-07-27 10 views
11

Sau khi cập nhật lên sư tử núi, công việc của tôi phải chịu trách nhiệm. Nó vẫn đang chạy nhưng các ứng dụng của tôi không thể kết nối với nó nữa.Sư tử núi Postgres không thể kết nối

$ ps aux | grep postgres 
postgres   204 0.0 0.0 2446960 836 ?? Ss 7:31AM 0:00.59 postgres: stats collector process  
postgres   203 0.0 0.1 2478732 2240 ?? Ss 7:31AM 0:00.41 postgres: autovacuum launcher process  
postgres   202 0.0 0.0 2478600 584 ?? Ss 7:31AM 0:00.34 postgres: wal writer process  
postgres   201 0.0 0.0 2478600 784 ?? Ss 7:31AM 0:00.48 postgres: writer process  
postgres   95 0.0 0.0 2446960 368 ?? Ss 7:31AM 0:00.11 postgres: logger process  
postgres   64 0.0 0.2 2478600 7972 ?? Ss 7:31AM 0:00.26 /Library/PostgreSQL/9.1/bin/postmaster -D/Library/PostgreSQL/9.1/data 
anezio   10205 0.0 0.0 2432768 624 s000 R+ 8:01AM 0:00.00 grep postgres 

và các ứng dụng của tôi đang trở về lỗi này:

could not connect to server: No such file or directory 
Is the server running locally and accepting 
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"? 

tôi vẫn có thể kết nối với psql với lệnh /Library/PostgreSQL/9.1/bin/psql -U postgres

Có vẻ như một cái gì đó không trỏ đến đúng nơi

+1

có vẻ như bạn có một số bản dựng khác của postgres trên máy mà bạn đang sử dụng psql từ đó. có lẽ bạn có thể cho chúng tôi biết về lịch sử cài đặt của bạn? – araqnid

+0

Ive cài đặt nó bằng cách sử dụng trình cài đặt một cú nhấp chuột từ postgresql.com. Nó đã được làm việc tốt trước khi cập nhật của tôi làm sư tử núi –

+0

Ive giải quyết vấn đề này gỡ cài đặt và cài đặt lại Postgresql. Cảm ơn –

Trả lời

0

Tôi đã giải quyết vấn đề này bằng cách gỡ bỏ cài đặt và cài đặt lại nó

2

Đường dẫn ổ cắm miền mặc định của Unix được mã hóa cứng trong libpq. Điều có thể xảy ra là trước khi nâng cấp, ứng dụng của bạn đã sử dụng thư viện libpq được cài đặt bởi trình cài đặt một cú nhấp chuột của Postgres, trong khi sau khi nâng cấp một phiên bản khác của thư viện này sẽ được chọn.

Để giải quyết vấn đề, từ quan điểm của người lập trình, bạn có thể chỉ định thư mục socket thay vì dựa vào mặc định. Để xác định vị trí thư mục chính xác nếu bạn không biết nó đã có, kết nối với bất kỳ cơ sở dữ liệu như một superuser (thường Postgres) và vấn đề trong SQL:

SHOW unix_socket_directory; 

Sau đó thay đổi hoặc cấu hình lại ứng dụng của bạn với đường dẫn thu được trong trường máy chủ của cuộc gọi kết nối (ví dụ: trong chuỗi kết nối: host=/path/to/socket dbname=d user=u). Libpq sẽ nhận ra nó là một thư mục unix socket bởi vì nó bắt đầu bằng dấu gạch chéo, trái ngược với tên máy chủ hoặc địa chỉ IP.

8

Tôi vừa gặp sự cố tương tự. Cá nhân tôi chỉ cần cài đặt lại từ trình cài đặt Postgres (postgresql-9.1.3-1-osx.dmg trong trường hợp của tôi), khởi động lại mac của tôi và tất cả là tốt một lần nữa. p.s. cài đặt lại không zap cơ sở dữ liệu của tôi :)

5

Kiểm tra xem psql bạn đang sử dụng. Tôi gặp vấn đề tương tự khi sử dụng máy chủ Postgres.app từ Heroku và thấy rằng tôi đang sử dụng ứng dụng khách /usr/bin/psql của Apple dựa trên cài đặt $PATH của tôi. Hoặc đặt $PATH của bạn để sử dụng thư viện Postgres hoặc sử dụng đường dẫn đầy đủ đến psql được cài đặt của bạn.

+0

Điều này làm việc cho tôi. Brew cài đặt psql tại/usr/local/bin – vish

+2

Tôi đã cài đặt postgres tại vị trí bia/usr/local/bin. Tôi đã thay đổi/etc/paths của mình để đặt/usr/local/bin ở đầu đường dẫn tìm kiếm để cài đặt brew được tìm thấy đầu tiên (trước/usr/bin cài đặt). Việc nâng cấp lên Mountain Lion đặt lại nội dung của/etc/paths; do đó tôi cũng bắt đầu nhận psql cài đặt táo trong/usr/bin (và thông điệp khó chịu "không thể kết nối với máy chủ ...") sau khi nâng cấp. Đặt/usr/local/bin trở lại đầu/etc/paths cố định mọi thứ. –

0

Vấn đề là sư tử núi đi kèm với khách hàng riêng của nó psql (/ usr/bin/psql) mà dường như cố gắng kết nối postgres bằng cách tìm kiếm tệp socket cục bộ ở một vị trí khác với tệp từ trình cài đặt của bạn. Bạn có thể thay đổi biến PATH của bạn để bao gồm thư mục bin postgres đầu tiên của bạn hoặc thay thế default/usr/bin/psql bằng một cái trong cài đặt của bạn.

1

Bằng cách nào đó tôi hoàn toàn quên rằng tệp ổ cắm này sẽ bị ẩn do dấu chấm. Đảm bảo bạn sử dụng ls -A /tmp/.s.PGSQL.5432 nếu bạn đang kiểm tra xem ổ cắm có thực sự ở đó không.

Ứng dụng Postgres của tôi bắt đầu chấp nhận kết nối lại từ psql sau khi tôi đã làm như sau. Tôi nghĩ rằng nó có liên quan đến bước 3.

  1. Thoát khỏi ứng dụng bưu chính.
  2. Trong loại thiết bị đầu cuối postgres -D ~/Library/Application\ Support/Postgres/var. Đây là thư mục dữ liệu nếu bạn đang sử dụng ứng dụng postgres. Nếu bạn không sử dụng ứng dụng postgres, bạn cần phải tìm ra thư mục dữ liệu thực sự là gì.
  3. Tôi nhận được lời nhắc từ OS X hỏi xem tôi có muốn cho phép lưu lượng truy cập đến không. Tôi đã nhấp có.
  4. Trong loại thiết bị đầu cuối khác nhau psql. Bạn nên kết nối thành công.
  5. Nhập \q để thoát psql.
  6. Quay lại tab đang chạy postgres, nhập ctrl c để ngừng postgres.
  7. Khởi động ứng dụng bưu chính. psql sẽ hoạt động.