2016-09-26 95 views
7

我一直在尋找解決方案,並找不到工作解決方案。無法連接到通過brew服務運行的Postgres服務器

我已經在我的MacBook中使用brew(brew install postgres)安裝了postgres,我正在使用brew服務運行它(brew services list將postgres顯示爲正在運行的服務)。但是,當我嘗試運行psql時,出現以下錯誤。

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

任何人都已經解決了類似的問題?

回答

2

我從版本的水龍頭安裝postgresql93時得到了同樣的錯誤。 檢查在brew services list~/Library/LaunchAgents/homebrew.mxcl.postgresql93.plist)輸出指示的.plist文件,我發現了以下消息:

FATAL: data directory "/usr/local/var/postgres" has group or world access
DETAIL: Permissions should be u=rwx (0700).

這使我這個答案:data directory "/usr/local/var/postgres" has wrong ownership

運行sudo chmod -R 700 /usr/local/var/postgres我得到一個不同的錯誤後:

FATAL: could not open directory "pg_tblspc": No such file or directory

,然後帶我到:`pg_tblspc` missing after installation of latest version of OS X (Yosemite or El Capitan)

運行mkdir /usr/local/var/postgres/pg_tblspc/後,羣集已成功啓動。

18

我有同樣的錯誤,我通過刪除進程PID文件固定它:

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

1

我的兩個答案,從威爾遜和蟈蟈這裏將結合。

您可以使用brew services list來檢查postgres服務的plist文件,以找到該文件的位置並在您最喜歡的編輯器中打開它。

你應該看到的StandardErrorPath所列數值爲:那麼你應該尾部使用tail -n 100 /usr/local/var/log/postgres.log

在我的情況下,日誌文件的末尾

<key>StandardErrorPath</key> 
<string>/usr/local/var/log/postgres.log</string> 

和錯誤是以下幾點:

2017-12-06 11:51:16.078 GMT [85476] FATAL: lock file "postmaster.pid" already exists 2017-12-06 11:51:16.078 GMT [85476] HINT: Is another postmaster (PID 601) running in data directory "/usr/local/var/postgres"?

這是因爲我不得不關閉我的Mac,postgres沒有得到清理PID文件的機會。只是刪除PID文件rm /usr/local/var/postgres/postmaster.pid和啓動Postgres的brew services start postgresql

一句警告:除非您確信的Postgres沒有運行不要刪除此PID文件。您可以運行brew services stop postgresql,然後等待brew services list的結果顯示posgres處於停止狀態。

+1

很好的總結和解釋,謝謝你的分解。 – coreyward