PostgreSQL không chạy trên Mac


55

Toàn bộ lỗi này là:

psql: không thể kết nối với máy chủ: Không có tệp hoặc thư mục như vậy. Là máy chủ đang chạy cục bộ và chấp nhận các kết nối trên ổ cắm tên miền Unix "/tmp/.s.PGQuery.5432"?

Đây là lần thứ hai tôi thiết lập Postgresql thông qua Homebrew trên máy Mac của mình và tôi không biết chuyện gì đang xảy ra. Trước đây, nó đã được làm việc. Tại một số điểm, tôi phải nhập một lệnh làm rối tung mọi thứ. Tôi không chắc. Bây giờ, bất cứ khi nào tôi nhập lệnh SQL từ dòng lệnh, tôi sẽ nhận được thông báo trên. Tôi đã chạy một lệnh để kiểm tra xem máy chủ có đang chạy hay không và dường như không phải vậy. Nếu tôi cố gắng khởi động máy chủ bằng

$ postgres -D / usr / local / pssql / data

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

postgres không thể truy cập tệp cấu hình máy chủ "/usr/local/pgsql/data/postgresql.conf": Không có tệp hoặc thư mục như vậy

Tôi đã gỡ cài đặt và cài đặt lại Postgresql thông qua Homebrew, nhưng vấn đề vẫn còn. Tôi hoàn toàn không biết làm thế nào để làm việc này. Bất kỳ trợ giúp sẽ được đánh giá cao.

Câu trả lời:


51

Vấn đề cũng có thể được quy cho một quá trình bị lỗi mà để lại postmaster.pidtập tin phía sau.

$ brew services stop postgresql
$ rm /usr/local/var/postgres/postmaster.pid # adjust path accordingly to your install
$ brew services start postgresql

4
Trên MacOSX, câu trả lời này đã cứu tôi. Có lỗi tương tự như OP sau khi máy tính của tôi khởi động lại cứng. Các brew serviceslệnh không hữu ích vì họ đã làm cho nó có vẻ như mọi thứ đã được làm việc. Loại bỏ postmaster.pidcái cuối cùng là mọi thứ hoạt động trở lại. Cảm ơn!
vinhboy

1
Điều này xảy ra với tôi quá. Sự cố nghiêm trọng của Mac OS X đã gây ra khởi động lại, sau đó Postgres không xuất hiện. dịch vụ pha bia bắt đầu / dừng / khởi động lại không hoạt động, bạn phải xóa tệp pid theo cách thủ công.
Matthijs

Tất nhiên, cách được đề xuất là chạy Postgres trong một container docker. Rất dễ dàng để bắt đầu và mọi thứ được dọn sạch khi tắt một container. Tôi muốn nói rằng việc chạy bất kỳ ứng dụng của bên thứ ba nào trong bộ chứa docker sẽ trở thành hiện thực.
demisx

43

Câu trả lời là đây .

Chạy lệnh này để tự khởi động máy chủ:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

14

Tôi đã nhận được như nhau

Is the server running locally and accepting connections on Unix domain 
socket "/tmp/.s.PGSQL.5432"?

vòng lặp cài đặt / bắt đầu / dừng / khởi động lại của Homebrew không có kết quả ...

Cuối cùng, brew postgresql-upgrade-databaseđã làm việc.

Có vẻ như tôi đã ở trên 9.6 thay vì 10,4 và một cái gì đó, App Store mới nhất của tôi đã khởi động lại tất cả các máy chủ cơ sở dữ liệu của tôi ...


điều này làm việc cho tôi
davideghz

Đó brew postgresql-upgrade-databaselà những gì tôi đã thiếu. Cảm ơn đã chỉ ra rằng.
Corin

Làm việc cho tôi cảm ơn!
Erwin Rooijakkers

Tôi đã thử tất cả các giải pháp. Nhưng đây là người duy nhất làm việc cho tôi. Sẽ là tuyệt vời để biết nếu có ai có thể giải thích tại sao điều này đã sửa nó hoàn toàn.
JohnnyQ

11

Tôi vừa mới giải quyết vấn đề tương tự. Đó là chỉ vì tôi quên để chạy nó đúng cách trước khi sử dụng.

Để cài đặt thuần túy postgresql trên Mac OS, quy trình sẽ là (sử dụng lệnh brew ):

brew install postgresql

sau đó nếu bạn muốn tự động chạy postgresqlkhi đăng nhập:

ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

nếu không bạn chỉ muốn chạy nó bất cứ lúc nào bạn muốn:

postgres -D /usr/local/var/postgres

Nếu trường hợp của bạn phức tạp hơn, hãy brew uninstall postgresqllàm lại các bước này.

Hy vọng nó giúp!


1
Cập nhật: đối với các postgres được cài đặt Homebrew, brew services start postgresqlhiện là cách ưa thích để bắt đầu postgres khi đăng nhập
henry

5
psql: 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 tiếp tục nhận được các lỗi trên và không có giải pháp nào ở trên làm việc cho tôi. Cuối cùng, giải pháp sau đây đã giải quyết vấn đề của tôi trên Mac OS X

Cài đặt postgres bằng brew

brew install postgres

Cài đặt dịch vụ sản xuất bia

brew tap homebrew/services

Để bắt đầu postgres như một dịch vụ nền

brew services start postgresql

Để dừng postgres bằng tay

brew services stop postgresql

Chúng tôi cũng có thể sử dụng dịch vụ sản xuất bia để khởi động lại Postgres

brew services restart postgresql

2

Điều này xảy ra khi máy chủ postgres không chạy. Các bước để cài đặt đúng Postgres qua Homebrew trên MAC:

  1. brew install postgres

  2. initdb /Users/<username>/db -E utf8 [Điều này khởi tạo postgres để sử dụng thư mục đã cho làm thư mục cơ sở dữ liệu. Thông thường không nên sử dụng thư mục người dùng để lưu trữ cơ sở dữ liệu. Chỉnh sửa tệp sudoers để thêm initdb và các lệnh tương tự, sau đó chạy initdb trên / usr / local / var / postgres]

  3. pg_ctl -D /Users/<username>/db -l logfile start [Sau khi nhận được thành công với bước 2, nó sẽ nhắc chạy bước 3. Lệnh này tự khởi động máy chủ.]


2

Nó làm việc cho tôi. Thay đổi thư mục postgresql theo phiên bản trong hệ thống của bạn.

Con đường chung- rm /usr/local/var/postgres/postmaster.pid

nhưng đối với postgresql@9.6 trong đường dẫn hệ thống của tôi là rm /usr/local/var/postgresql@9.6/postmaster.pid

khởi động lại postgresql@9.6- brew services restart postgresql@9.6


yup đó là MỘT hoạt động!
PirateApp

1

Tôi chỉ không ghi chú trong /etc/postgresql/9.5/main/postgresql.conf

unix_socket_permissions = 0777

và khởi động lại postgres. Và đối với tôi nó hoạt động.


1

Gần đây tôi đã đi qua một vấn đề tương tự. chỉ có một vấn đề và giải pháp khác. Tôi đã chạy 2 phiên bản postgres (9.3 và 9.6) mặc dù máy chủ được thiết lập để chạy trên 2 cổng khác nhau nhưng một số cách lệnh psql trên bash cố gắng kết nối với cổng mặc định 5432. Hãy chắc chắn kiểm tra xem máy chủ của bạn có đang chạy không và kiểm tra cài đặt cổng của bạn, sau đó chạy psql -p <port> postgres. Giải pháp là thay đổi cổng.


1

Tôi đã tìm kiếm trong một thời gian dài, và đây là giải pháp gọn gàng và sạch sẽ nhất:

Gần đây tôi đã nâng cấp Postgres từ 9.2 lên 9.3 bằng cách sử dụng postgres nâng cấp bia. Quá trình diễn ra suôn sẻ và pg_upTHER là một công cụ rất tiện dụng.

Tuy nhiên, rắc rối đã xảy ra khi tôi cố chạy bất kỳ thông số kỹ thuật nào cần kết nối với Postgres. Mặc dù Postgres chắc chắn đang chạy, nhưng đột nhiên tôi nhận được:

không thể kết nối với máy chủ: Không có tệp hoặc thư mục như vậy (PG :: ConnectionBad) Máy chủ có chạy cục bộ và chấp nhận kết nối trên ổ cắm tên miền Unix "/var/pgsql_socket/.s.PGQuery.5432" không? Vấn đề là phiên bản mới của Postgres lắng nghe trên /tmp/.s.PGQuery.5432 thay vào đó. Tôi có thể đã loay hoay với cấu hình và khiến Postgres sử dụng ổ cắm tên miền trước đây hoặc nói với Rails một cách rõ ràng về cách kết nối, nhưng cả hai cách tiếp cận đó dường như là công việc tôi không nên làm. Tôi đã không nói với Rails kết nối với các postgres trên con đường đó, Rails đã giả định nó, và bây giờ các giả định của nó đã sai.

Cách khắc phục rất đơn giản, nếu có chút bất ngờ. Khi bạn cài đặt đá quý 'pg', nó sẽ phát hiện phiên bản Postgres nào được cài đặt và đặt đường dẫn ổ cắm miền thích hợp. Giải pháp đơn giản như cài đặt lại đá quý. $ gem uninstall pg $ cd my-rails-app/ $ bundle install

http://daniel.fone.net.nz/blog/2014/12/01/fixing-connection-errors-after-upgrad-postgres/


1
Vui lòng chỉnh sửa câu trả lời của bạn để nó cung cấp giá trị nếu liên kết ngừng hoạt động . Bạn có thể tìm thấy hướng dẫn về cách thực hiện việc này một cách chính xác trong Cách tham chiếu tài liệu do người khác viết . Cảm ơn bạn.
Paul White

0

cập nhật nó bằng cách sử dụng lệnh

  brew postgresql-upgrade-database

Nếu bạn gặp lỗi sau , không tìm thấy lệnh 'brew', nhưng có thể được cài đặt bằng: sudo apt install linuxbrew-Wrapper

sau đó cài đặt nó bằng cách sử dụng lệnh

 sudo apt install linuxbrew-wrapper

-3

Các bước dưới đây giúp tôi:

brew gỡ cài đặt postgresql brew cài đặt postgresql brew postgresql-nâng cấp-cơ sở dữ liệu

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.