2016-04-05 14 views
6

Gần đây tôi đã cài đặt PostGIS trên của tôi Mac (El Capitan 10.11.4, Postgres là phiên bản 9.5.1) sử dụng Homebrew, và tôi làm theo các hướng dẫn - http://morphocode.com/how-to-install-postgis-on-mac-os-x/Fatal error "postmaster.pid" đã tồn tại

Khi tôi cố gắng để bắt đầu sử dụng Postgres

pg_ctl -D /usr/local/var/postgres start 

tôi nhận được lỗi sau:

$ FATAL: lock file "postmaster.pid" already exists 
HINT: Is another postmaster (PID 280) running in data directory "/usr/local/var/postgres"? 

Vì vậy, tôi đã dành một vài giờ nghiên cứu làm thế nào để giải quyết vấn đề này, nhưng không có kết av đau.

Đáng chú ý, tôi đã cố gắng để giết PID theo khuyến cáo trong một câu trả lời trên superuser - https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists- (trong trường hợp trên, tôi chạy kill 208), nhưng ngay sau khi tôi đã cố gắng để bắt đầu Postgres một lần nữa,

tôi có cùng một lỗi, mặc dù với một số PID khác nhau. Tôi đã thấy một vài người đề xuất xóa tệp postmaster.pid, nhưng tôi cảm thấy có lẽ tôi nên lưu nó như một phương sách cuối cùng ...

Phải thừa nhận một phần lý do tôi không chắc chắn cách khắc phục điều này là tôi 'không thực sự rõ ràng về những gì các postmaster thậm chí là - Tôi chỉ mới bắt đầu tìm hiểu về tất cả những điều này.

Nhảy vào cơ sở dữ liệu Postgres thông qua lệnh psql db_name hoạt động tốt, đối với những gì nó đáng giá.

Trả lời

3

Postmaster là quy trình chính của PostgreSQL. Bạn đang cố gắng để bắt đầu PostgreSQL đã chạy (và bạn đang nói bản thân bạn có thể kết nối với nó). Chỉ cần bỏ qua bước đó trong quy trình của bạn.

+0

Oh! Cảm ơn bạn. Nó có vẻ hiển nhiên với tôi bây giờ, nhưng tôi chỉ đang tìm đường đến đây. Nhiều đánh giá cao. – skwidbreth

7

TL; DR: Vì bạn có thể kết nối với cơ sở dữ liệu, bạn không cần phải khởi động lại máy chủ - nó đã chạy.


pg_ctl được sử dụng để kiểm soát máy chủ PostgreSQL. Kể từ khi máy chủ của bạn đã được bắt đầu, lệnh của bạn:

pg_ctl -D /usr/local/var/postgres start 

Trả về một lỗi, nói rằng có một khóa trên postmaster.pid - đó là sự thật vì đã có một máy chủ sử dụng mà PID.


Có hai cách:

  1. Cách cơ bản nhất - bỏ qua bước này, máy chủ của bạn là đang chạy!
  2. Thực hiện thao tác không cần thiết - dừng máy chủ và sau đó bắt đầu lại.

Bạn có thể dừng máy chủ của bạn thực hiện:

pg_ctl -D /usr/local/var/postgres stop 

Vì vậy, bạn sẽ không có khóa trên bưu điện nữa và bạn có thể sử dụng lệnh của bạn để bắt đầu nó một lần nữa.

+1

Oh người đàn ông, cảm ơn bạn rất nhiều. Tôi thực sự đánh giá cao sự giúp đỡ của bạn. Một ngày nào đó, tôi sẽ trở thành chủ nhân của PostGIS ... nhưng cho đến lúc đó ... – skwidbreth

+0

PostGIS thực sự không liên quan gì đến vấn đề của bạn :-) Đó là vấn đề nghiêm ngặt về dịch vụ Postgres. –

+0

Tôi đào - chỉ cần đảm bảo tôi đặt mọi thứ lên bàn. – skwidbreth

3

Đăng điều này trong trường hợp nó giúp người khác:

Tôi gặp vấn đề tương tự như OP sau khi khởi động lại cứng khi máy tính xách tay của tôi bị lỗi. Có gì giúp tôi được chạy lệnh sau để xem những gì PID đã được gắn liền với postmaster.pid:

cat /usr/local/var/postgres/postmaster.pid

Con số đầu tiên xuất hiện sẽ là PID. Nhìn vào Activity Monitor, tôi có thể thấy rằng Postgres đang chạy, nhưng không có một số PID khớp với số được hiển thị.

Thay vì các bước được nêu trong câu trả lời được tham chiếu trên Superuser, tôi khởi động lại máy tính xách tay của mình đúng cách và sau đó mở Terminal và chạy brew services restart postgresql.

Điều này đã hiệu quả mà không phải xóa postmaster.pid, mà tôi thấy một vài bài đăng khác đề xuất. Đôi khi đó là giải pháp đơn giản hoạt động.

Các vấn đề liên quan