2013-06-21 37 views
8

我得到的Postgres的家釀安裝中常見的Mac OSX上的錯誤,的Mac OSX獅子的Postgres不接受連接上/tmp/.s.PGSQL.5432

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

這顯然是由於卻有其事系統上的多個安裝。但是,通常的步驟並不能解決問題。

我能夠成功啓動的Postgres和運行:

ps auxw | grep post 

回報..

euanmillar  847 0.0 0.0 2432768 588 s000 R+ 11:19am 0:00.00 grep postgres 
euanmillar  845 0.0 0.0 2439324 448 ?? Ss 11:19am 0:00.00 postgres: 
stats collector process 
euanmillar  844 0.0 0.0 2443176 1520 ?? Ss 11:19am 0:00.00 postgres: 
autovacuum launcher process 
euanmillar  843 0.0 0.0 2443044 544 ?? Ss 11:19am 0:00.00 postgres: wal writer process 
euanmillar  842 0.0 0.0 2443044 584 ?? Ss 11:19am 0:00.00 postgres: writer process 
euanmillar  841 0.0 0.0 2443044 596 ?? Ss 11:19am 0:00.00 postgres: checkpointer process 
euanmillar  839 0.0 0.0 2443044 3616 s000 S 11:19am 0:00.02 /us 

所以它看起來像Postgres的運行。

我已經在postgresql.conf中

port = 5432 
unix_socket_directory = '/var/pgsql_socket' 
unix_socket_permissions = 0777 

和VAR/pgsql_socket評論下面幾行/我有一個隱藏的文件.s.PGSQL.5432

我試圖解決許多這裏的帖子。這其中尤其是似乎類似:

https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why

但不同的是,我有一個「在/ var/pgsql_socket」目錄是CHOWN-ED給大家。我已經使用Homebrew完全刪除並重新安裝Postgres,但仍然有同樣的問題。

+1

'ps'輸出顯示postgres是** not **正在運行。請參閱[另一個問題](http://dba.stackexchange.com/questions/21587)瞭解運行時的示例輸出。你的第一步是用自制程序指令實際啓動服務器。 –

+0

你的描述混淆了'/ var/postgresql'和'/ var/pgsql_socket'。 –

+0

感謝您的幫助和道歉,如果我的描述有點混亂。 –

回答

1

這不是一個OS X的特定問題。你需要清理你的postgres安裝,然後重新安裝。我在我的Ubuntu 12.04上遇到了這個問題。在清理以前的安裝時,您需要刪除所有以postgres(postgresql,postgresql-common,postgresql-client等)開頭的軟件包,換句話說,就是postgres *。我沒有使用brew,在OS X Lion上使用過端口。我想等效命令應該是sudo brew remove postgres*。一個sudo brew安裝postgresql應該這樣做。

此外,如果您覺得服務器已在運行,您可以嘗試sudo -u postgres createuser。如果失敗了,您將需要重新安裝。

但是,您的ps aux | grep post的輸出實際上是grep命令本身。不運行postgres服務器。

編輯:看起來像下面的鏈接可以幫助https://dba.stackexchange.com/questions/21587/postgresql-is-running-locally-but-i-cannot-connect-why 如果是的話,那麼這個問題可能是重複的。

+0

謝謝。我遵循這個建議,特別是SO鏈接中的建議,並修改了我的初始文章。不幸的是我仍然有這個問題。 –

9

一個更簡單的解決方案是找到插座的實際位置與預期的位置。在我的情況下,我跑了:

$ locate PGSQL.5432 
/private/var/pgsql_socket/.s.PGSQL.5432 
/private/var/pgsql_socket/.s.PGSQL.5432.lock 

然後只是將預期的套接字位置符號鏈接到實際的套接字位置。

$ ln -s /private/var/pgsql_socket/.s.PGSQL.5432 /tmp/.s.PGSQL.5432 
2

正在使用系統客戶端,而不是您的brew版本。符號鏈接方法只會持續到下一次重新啓動。這種方法解決其根源問題,我相信

  1. 須藤編輯/etc/paths
  2. 移動包含/usr/local/bin到文件的頂部線。 (之前/usr/bin
  3. 卸載你的Postgres寶石(S)(gem uninstall pg
  4. 啓動新的外殼以加載新的環境設置
  5. bundle
14

對於我來說,我在/usr/local/var/postgres刪除postmaster.pid 。把我固定了。

30

您需要刪除postmaster.pid,這應該是在以下路徑: /usr/local/var/postgres/postmaster.pid

0

我在Mac Serria同樣的問題。在Mac Serria中,如果使用GUI安裝程序而不是自制軟件,則可以在/Users/<user_name>/Library/Application Support/Postgres/var-9.6內找到postmaster.pid。

一旦你刪除這個文件,那麼一切應該正常工作。

相關問題