2012-07-27 113 views
11

我更新到山獅後,我的postgres做的工作。它仍在運行,但我的應用程序無法再連接到它。山獅Postgres無法連接

$ ps aux | grep postgres 
postgres   204 0.0 0.0 2446960 836 ?? Ss 7:31AM 0:00.59 postgres: stats collector process  
postgres   203 0.0 0.1 2478732 2240 ?? Ss 7:31AM 0:00.41 postgres: autovacuum launcher process  
postgres   202 0.0 0.0 2478600 584 ?? Ss 7:31AM 0:00.34 postgres: wal writer process  
postgres   201 0.0 0.0 2478600 784 ?? Ss 7:31AM 0:00.48 postgres: writer process  
postgres   95 0.0 0.0 2446960 368 ?? Ss 7:31AM 0:00.11 postgres: logger process  
postgres   64 0.0 0.2 2478600 7972 ?? Ss 7:31AM 0:00.26 /Library/PostgreSQL/9.1/bin/postmaster -D/Library/PostgreSQL/9.1/data 
anezio   10205 0.0 0.0 2432768 624 s000 R+ 8:01AM 0:00.00 grep postgres 

和我的應用程序正在返回該錯誤:

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"? 

我仍然可以連接使用命令給psql /Library/PostgreSQL/9.1/bin/psql -U Postgres的

好像有些東西並沒有指向正確的位置

+1

聽起來像你在該機器上有一些其他的postgres build,你使用的是psql。也許你可以告訴我們關於你的安裝歷史嗎? – araqnid 2012-07-27 11:12:01

+0

我使用postgresql.com中的單擊安裝程序安裝了它。這是工作正常之前,我的更新做山獅子 – 2012-07-27 11:19:35

+0

我解決了這個問題卸載並重新安裝Postgresql。謝謝 – 2012-07-27 12:54:40

回答

0

我已經卸載並重新安裝它

2

默認的Unix域套接字路徑是在libpq中硬編碼的。 可能發生的情況是,在升級之前,您的應用程序使用Postgres一鍵安裝程序安裝的libpq庫,而在升級之後,此庫的不同版本會被拾取。

要解決這個問題,從程序員的角度來看,您可以指定套接字目錄而不是依賴默認值。 要找到正確的目錄,如果你不知道它已經,連接到任何數據庫作爲超級用戶(Postgres的一般)和問題SQL:

SHOW unix_socket_directory; 

然後改變或在所獲得的路徑重新配置你的應用程序連接呼叫的主機字段(例如,在連接字符串中:host=/path/to/socket dbname=d user=u)。 Libpq會將其識別爲unix套接字目錄,因爲它以斜槓開始,而不是主機名或IP地址。

8

我剛剛有同樣的問題。就我個人而言,我只是從Postgres安裝程序(postgresql-9.1.3-1-osx.dmg)重新安裝,重新啓動我的Mac,並再次罰款。附:重新安裝沒有zap我的數據庫:)

5

檢查你正在使用哪個psql。我在使用Heroku的Postgres.app服務器時遇到了同樣的問題,並發現我使用的是基於我的$PATH設置的Apple客戶端/usr/bin/psql客戶端。請將您的$PATH設置爲使用Postgres庫或使用安裝的psql的完整路徑。

+0

這對我有用。 Brew將psql安裝在/ usr/local/bin – vish 2012-08-18 20:49:37

+2

我在位於/ usr/local/bin的brew位置安裝了postgres。我已將/ etc /路徑更改爲將/ usr/local/bin放在搜索路徑的頂部,以便首先找到brew安裝(在/ usr/bin安裝之前)。升級到Mountain Lion重置/ etc /路徑的內容;因此我也開始在升級後在/ usr/bin(以及令人討厭的消息「無法連接到服務器...」)上安裝蘋果安裝的psql。將/ usr/local/bin放回/ etc /路徑的頂部可以修復所有問題。 – 2012-10-07 00:05:47

0

的問題解決了這個問題是美洲獅,用它自己的psql客戶端(在/ usr/bin中/ psql的),這顯然是試圖通過搜索到的Postgres連接本地套接字文件位於與安裝程序不同的位置。您可以更改您的PATH變量以首先包含您的postgres bin文件夾,或者將您的安裝中的缺省值替換爲默認的/ usr/bin/psql。

1

不知怎的,我完全忘了這個套接字文件將被隱藏,因爲點。如果您正在檢查插槽是否實際存在,請確保使用ls -A /tmp/.s.PGSQL.5432

我執行以下操作後,我的postgres應用程序開始接受來自psql的連接。我認爲這與步驟3有關。

  1. 退出postgres應用程序。
  2. 終端類型postgres -D ~/Library/Application\ Support/Postgres/var。這是數據目錄,如果你正在使用postgres應用程序。如果你不使用postgres應用程序,你需要找出數據目錄的真實含義。
  3. 我收到了OS X的提示,詢問我是否想允許傳入流量。我點擊是。
  4. 在不同的終端選項卡中輸入psql。你應該連接成功。
  5. 輸入\q退出psql。
  6. 回到運行postgres的標籤上,輸入ctrl c來停止postgres。
  7. 啓動postgres應用程序。 psql應該可以工作。