Postgres DB không khởi động trên Mac OSX: ERROR cho biết: kết nối trên ổ cắm miền Unix [đã đóng]


81

Tôi đã cài đặt Postgresql và sau đó chạy một loạt ứng dụng rails trên Mac OSX Mountain Lion cục bộ của mình và tạo cơ sở dữ liệu, v.v. Hôm nay, sau một thời gian khi tôi khởi chạy pgAdminIII và cố gắng khởi chạy máy chủ cơ sở dữ liệu, tôi đã gặp lỗi này:

nhập mô tả hình ảnh ở đây

Một google nhanh chóng hiển thị bài đăng này . Việc duyệt nhiều hơn đã chỉ ra thực tế rằng có thể có một số loại tệp postmaster.pid nằm xung quanh đó có thể là nguyên nhân gốc rễ của điều này. Nếu tôi xóa mọi thứ sẽ ổn.

Tuy nhiên, trước khi xóa nội dung trên máy tính của mình, tôi muốn đảm bảo rằng tôi đang gỡ lỗi điều này một cách có hệ thống sẽ không dẫn đến nhiều vấn đề hơn.

Ở đâu đó tôi đã đọc rằng trước khi xóa tệp đó, tôi cần chạy lệnh này:

  ps auxw | grep post

Nếu tôi không nhận được kết quả sau đó, có thể xóa tệp. Không. Chà, tôi nhận được kết quả này của lệnh đó:

  AM               476   0.0  0.0  2423356    184 s000  R+    9:28pm   0:00.00 grep post

Vì vậy, tất nhiên bây giờ tôi vô cùng bối rối.

Vậy tôi phải làm thế nào?

Đây là một phần của nhật ký lỗi máy chủ postgres của tôi:

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

Postgresql vẫn không chạy, vẫn gặp lỗi tương tự và không có gì thay đổi. Tôi quá gà để xóa mọi thứ mà không cần kiểm tra trên SO.

Xin một số chuyên gia vui lòng hướng dẫn một noob.

Cảm ơn


Đầu tiên, tôi không phải là một chuyên gia. Với điều đó đã nói, có vẻ như cơ sở dữ liệu của bạn không tắt đúng cách. Tôi sẽ xóa tệp pid và cố gắng khởi động cơ sở dữ liệu.
fbynite,

Vâng, đó là những gì tôi muốn làm, nhưng tôi đã đọc ở đâu đó rằng điều này có thể gây ra thiệt hại vĩnh viễn cho cơ sở dữ liệu nếu một pid đang chạy trong khi điều này được thực hiện. Không chắc gì đó là tất cả về
banditKing

@banditKing Bạn không bao giờ cần phải xóa postmaster.pid. Máy chủ sẽ xóa nó khi khởi động nếu nó không hợp lệ (cũ) và điều quan trọng là bảo vệ dữ liệu. Vui lòng giải thích cách bạn cài đặt PostgreSQL trên máy tính để bắt đầu - thông qua trình cài đặt EnterpriseDB, homebrew, Postgres.app, cái gì? Cũng đề cập đến phiên bản PostgreSQL. Cuối cùng, nếu bạn thêm rõ ràng "localhost" vào các tùy chọn kết nối trong Pgadmin-III thì nó có hoạt động không? Nếu vậy, bạn đang bị cắn bởi một quyết định đóng gói thực sự xấu Apple đã thực hiện một thời gian trước đây ...
Craig Ringer

@CraigRinger cảm ơn đã làm rõ. Tôi không nhớ làm thế nào tôi đã cài đặt nó, nó là một thời gian trước đây. Tôi có thể làm gì không? Hoặc dữ liệu trong đó chỉ là dữ liệu test nên trường hợp xấu nhất thì mình gỡ cài đặt lại. Bất kỳ blog / hướng dẫn tốt về cách làm như vậy một cách chính xác?
banditKing

1
@banditKing Đã thử khởi động lại? Bạn có thể xác định cách bạn đã cài đặt từ trang này: wiki.postgresql.org/wiki/Installers/Mac_OS_X . Có vẻ như bạn có thể đã sử dụng Homebrew. Nếu máy chủ PostgreSQL không thể xóa không chính xác postmaster.pidthì bạn có thể xóa nó sau khi xác minh rằng không có postgresquy trình nào đang chạy, điều quan trọng là bạn phải chắc chắn rằng trên thực tế không có quy trình PostgreSQL nào. Tuy nhiên, việc máy chủ không thể loại bỏ một thứ cũ postmaster.pidcó vẻ như là một lỗi đối với tôi.
Craig Ringer

Câu trả lời:


192

Tôi đã gặp vấn đề tương tự ngày hôm nay trên Mac Sierra. Trong Mac Sierra, bạn có thể tìm thấy postmaster.pidbên trong /Users/<user_name>/Library/Application Support/Postgres/var-9.6. Xóa postmaster.pidvà sự cố sẽ được khắc phục.


19
Đã xóa postmaster.pidở vị trí này và sự cố đã được khắc phục. Cảm ơn!
JLF

1
Đây cũng là nơi tôi cần phải tìm ra postmaster.pidtập tin kể từ khi tôi đang sử dụng Postgres.app
Jarsen

3
Đối với Postgres.app nó giống: Có thể là nó nằm ở đây/Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid
Simon Franzen

1
Tôi cũng đang sử dụng ứng dụng Postgres.app chạy v10. Nếu máy Mac của tôi bị tắt đột ngột trong khi Postgres đang chạy thì tôi cần phải xóa tệp postmaster.pid khi khởi động lại máy tính. Có ai biết nếu đó là hành vi mong đợi của ứng dụng? Có vẻ như một thiết kế kỳ lạ nếu cố tình.
Alexander

Đảm bảo rằng quá trình này được rút ngắn lại trước khi xóa tệp này. Bạn có thể chạy cat postmaster.pidtrong thư mục để xem và tham chiếu rằng bạn không thấy PID đang chạy trong một cái gì đó như trình theo dõi hoạt động. Giao diện người dùng Postgres sẽ cảnh báo bạn về điều này, nhưng tôi nghĩ tôi nên đặt nó ở đây trước khi mọi người hiểu sai và làm thế nào để kiểm tra bản thân. Nó cũng đủ để tìm kiếm postgrestrong trình theo dõi hoạt động và loại bỏ bất kỳ thứ gì có liên quan hoặc chỉ cần khởi động lại hệ thống của bạn và sau đó xóa tệp. Không làm điều này có thể dẫn đến một db tham nhũng 🔥
CTS_AE

42

Điều này có thể xảy ra nếu cơ sở dữ liệu không tắt đúng cách. Để khắc phục, chỉ cần xóa postmaster.pidtệp. Vị trí khác nhau dựa trên hệ điều hành của bạn:

Hệ điều hành Mac:

 rm /Users/<user_name>/Library/Application\ Support/Postgres/var-9.6/postmaster.pid

hoặc sử dụng Postgres.app:

 rm /Users/<user>/Library/Application\ Support/Postgres/var-10/postmaster.pid

Linux:

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

2
Cảm ơn, giải pháp này hoạt động! Sau khi loại bỏ postmaster.pidvà chạy postgres -D /usr/local/var/postgres, nó thông báo cho tôi về các lỗi gây ra: "Hệ thống cơ sở dữ liệu không được tắt đúng cách xuống; phục hồi tự động cơ bản dở dang"
Hoàng Lê

này giải quyết vấn đề của tôi
Fabrice Yopa

Những công việc này. Trong trường hợp của tôi, tệp pid không bị xóa do khởi động lại khó, vì vậy chỉ cần sao lưu nó.
George C

21

Tôi có cơ sở dữ liệu đang hoạt động.

Đây là các bước tôi đã thực hiện:

  1. Tôi đã khởi động lại máy tính của mình
  2. Tôi đã mở thiết bị đầu cuối và chạy cd /
  3. Sau đó tôi đã làm ls -la
  4. Đảm bảo rằng tôi có thể đến MackintoshHD/usr/local/var/postgres
  5. Sau đó đã làm ls -la
  6. Ở đây tôi đã thấy tệp postmaster.pid
  7. Tôi đã chạy lệnh này cp postmaster.pid ~/Desktopđể sao chép tệp vào màn hình của mình. Tôi muốn thực hiện việc này nếu tôi đang xóa tệp. Nếu có gì sai tôi có thể đặt lại
  8. Sau đó, tôi chạy lệnh này để xóa tệp khỏi thư mục postgres rm -r postmaster.pid
  9. Tôi vào gui pgadmin3 của mình và kích hoạt nó. và Thì nó đã hoạt động :)

Cảm ơn @Craig Ringer đã giúp đỡ


6
Thư mục của tôi không nằm trong / usr / local / var / postgres mà nằm trong / Users / [myhome] / Library / Application Support / Postgres / var-9.5 / - thư mục cuối cùng tùy thuộc vào phiên bản của bạn, đã xóa postmaster.pid và hoạt động như một sự quyến rũ, cảm ơn bạn
Radek

4

Tôi đang sử dụng Postgres.app và những điều dưới đây phù hợp với tôi:

Tôi đã nhập các lệnh vào thiết bị đầu cuối của mình bên dưới, định vị trước thư mục Postgres và không sử dụng "justin".

$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4"

$pg_ctl restart -m immediate

Như Justin giải thích trong bài đăng của mình, kết quả sau đây là:

đang đợi máy chủ tắt ……………………………………………………… không thành công pg_ctl: máy chủ không tắt

Sau khi nhập lại lệnh:

$pg_ctl restart -m immediate

Nó hoạt động và tôi nhận được thông báo này:

pg_ctl: quá trình máy chủ cũ (PID: 373) dường như đã không còn khởi động máy chủ dù sao máy chủ khởi động LOG: hệ thống cơ sở dữ liệu bị gián đoạn; được biết lần cuối vào lúc 2015-07-28 18:15:26 PDT LOG: hệ thống cơ sở dữ liệu không được tắt đúng cách; đang tiến hành khôi phục tự động ĐĂNG NHẬP: bản ghi có độ dài bằng 0 tại 0 / 4F0F7A8 ĐĂNG NHẬP: không cần làm lại ĐĂNG NHẬP: hệ thống cơ sở dữ liệu sẵn sàng chấp nhận các kết nối ĐĂNG NHẬP: khởi chạy autovacuum

Nguồn

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.