2014-05-05 108 views
2

升級到版本9.3.2 homebrew後,我的postgres安裝發生了一些奇怪的事情。postgres有時在重新啓動後無法啓動

有時並不是每一次,如果我進入psql我收到此錯誤信息:

無法連接到服務器:沒有這樣的文件或目錄 是在本地運行和接受 連接服務器Unix域套接字「/tmp/.s.PGSQL.5432」?

還可以看出的Postgres,是因爲跑,如果我試圖用這個命令停止Postgres的:

pg_ctl -D /usr/local/var/postgres stop -s -m fast

我得到這樣的迴應:

pg_ctl:服務器不關機

如果我看在server.log我可以看到如下條目:

FATAL:鎖定文件「postmaster.pid」已經存在提示:另一種 郵政局長(PID 208)的數據目錄 運行「的/ usr /本地的/ var/Postgres的「?

一些瘋狂的google搜索後,我可以通過輸入以下命令來治癒這種:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist 

我想首先的理解發生了什麼和第二的是我想解決這個問題一勞永逸。

任何人都可以解釋什麼可能發生和治癒?

+0

這是在MacOS X? – frlan

+0

更新。文件名稱已更改。但我只是去'〜/ Library/LaunchAgents /'手動刪除了'com.postgresapp.Postgres2LoginHelper.plist',並且Postgres一切正常。我的問題幾乎肯定是崩潰的結果。不需要做卸載,而是YMMV。 – Greg

回答

0

首先,嘗試拉起日誌上的PostgreSQL,在OSX(與PG 9.3),這將最有可能是在這裏:

/Library/PostgreSQL/9.3/data/pg_log 

檢查此日誌,看看是否有任何entires說可能會解釋更多發生的事情。將其張貼在此處或放在某處過去的垃圾箱中。這可以幫助社區調試問題。

接下來,「pg_ctl」表示服務器未關閉的原因是因爲您有一個過時關閉時未被刪除的過時套接字文件和/或過時.plist文件。這可能表明PostgreSQl守護進程已「崩潰」或被強制關閉,並且沒有乾淨的結束。

您使用的命令刪除了陳舊的文件,從而讓一個新的套接字文件被創建。

此外,重要的是要知道這是PostgreSQL的一次小升級還是重大升級。主要升級總是需要遷移數據目錄。用新引擎運行舊的PostgreSQL數據目錄可能會有意想不到的結果。

+0

我已更新帖子。 日誌文件中包含以下條目: 致命錯誤:鎖定文件「postmaster.pid」已存在 提示:是否在數據目錄「/ usr/local/var/postgres」中運行另一個postmaster(PID 208)? – dagda1

+0

@ dagda1感謝您的更新,但這並沒有多大幫助。它確實說明有一個陳舊的.pid文件沒有被清理。正如我在答覆中所問的那樣,這是次要的還是重大的升級?是否有可能您的Homebrew環境中仍然運行*舊* PostgreSQL? – Timusan

+0

這個bug再次襲擊了我,我發佈在我的文章中的修復此次不起作用。日誌中說: 致命:鎖定文件「postmaster.pid」已存在 如何判斷另一個實例是否正在運行? – dagda1