2013-07-23 82 views
24

我已經安裝PostgreSQL和然後跑一堆Rails應用在我的本地的Mac OSX山獅,一段時間後創建的數據庫等。今天,當我發動了對Unix域套接字連接pgAdminIII並試圖發動我得到這個錯誤的數據庫服務器:的Postgres數據庫沒有啓動Mac OSX上:ERROR說:

enter image description here

快速谷歌顯示this崗位。更多的瀏覽指出,可能存在某種postmaster.pid文件,這可能是造成這種情況的根本原因。如果我刪除那些東西會很好。

不過,在我走之前我的電腦上刪除的東西,我想,以確保進出口調試這其中不會導致更多的問題的系統方法。

帶我閱讀,刪除該文件之前,我需要運行這個命令:

ps auxw | grep post 

如果我沒有得到任何結果的話,它的確定要刪除的文件。否則不。那麼,我得到了這個命令的結果:

AM    476 0.0 0.0 2423356 184 s000 R+ 9:28pm 0:00.00 grep post 

所以現在當然,我徹底困惑。

那我該怎麼辦?

這裏是我的Postgres的服務器錯誤日誌的一部分:

FATAL: lock file "postmaster.pid" already exists 
HINT: Is another postmaster (PID 171) running in data directory "/usr/local/var/postgres"? 

PostgreSQL是還沒有運行,仍然得到同樣的錯誤,並沒有發生任何改變。我太雞了,沒有檢查就刪除東西。

請問您的一些專家,請指導一個noob。

謝謝

+0

首先,我不是專家。這就是說,聽起來像,你的數據庫沒有正常關閉。我會刪除該pid文件並嘗試啓動數據庫。 – fbynite

+0

是的,這就是我想要做的,但我讀了一些地方,這可能會導致數據庫永久性損壞,如果一個PID正在運行,而這完成。不知道這是什麼 – banditKing

+0

@banditKing你永遠不應該刪除'postmaster.pid'。服務器在啓動時會將其刪除(陳舊),對於數據保護非常重要。請**解釋如何在您的計算機上安裝PostgreSQL **首先 - 通過EnterpriseDB安裝程序,自制程序,Postgres.app,什麼?還提到PostgreSQL版本。最後,如果您明確地將「localhost」添加到Pgadmin-III中的連接選項,它是否工作?如果是這樣,你正在被一個非常糟糕的包裝決定,蘋果前一段時間被咬了... –

回答

13

我現在有數據庫工作。

下面是我所採取的步驟:

  1. 我重新啓動我的電腦
  2. 我打開終端,跑cd /
  3. 然後我做了ls -la
  4. 確保我能得到MackintoshHD/usr/local/var/postgres
  5. 那時ls -la
  6. 在這裏,我看到了郵政局長。 PID文件
  7. 我跑這個命令cp postmaster.pid ~/Desktop其複製 文件到我的desktop.I喜歡這樣做,如果我刪除的文件。如果 東西確實錯了,我可以把它放回去
  8. 然後,我跑到這個命令從Postgres的 目錄rm -r postmaster.pid
  9. 我去我pgadmin3 GUI和發射它刪除該文件。瞧它的工作:)

感謝@Craig林格對他的幫助

+1

我不是在/ usr/local/var/postgres中,而是在/ Users/[myhome]/Library/Application Support/Postgres/var-9.5/- 上一個目錄取決於你的版本,刪除了postmaster.pid, ,謝謝 – Radek

16

如果數據庫未正常關閉這種情況經常發生。

刪除postmaster.pid文件:

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

或者,備份:

mv /usr/local/var/postgres/postmaster.pid /usr/local/var/postgres/postmaster.pid.backup 
+1

謝謝,這個解決方案有效!刪除'postmaster.pid'並運行'postgres -D/usr/local/var/postgres'後,它會注意到錯誤原因:「數據庫系統未正確關閉;自動恢復正在進行中」 –

55

今天我有同樣的問題在Mac Serria。在Mac Serria你可以找到postmaster.pid/Users/<user_name>/Library/Application Support/Postgres/var-9.6

+4

已刪除'postmaster。 pid'在這個位置,問題已修復。謝謝! – JLF

+1

這也是我需要查找'postmaster.pid'文件的地方,因爲我使用Postgres.app – Jarsen

-1

我使用Postgres.app,和下面的工作對我來說:

我輸入的命令到我的終端下面,預先定位Postgres的文件夾,並沒有使用「賈斯汀」。

$declare -x PGDATA="/Users/justin/Library/Application Support/Postgres/var-9.4" 

$pg_ctl restart -m immediate 

賈斯汀在他的文章解釋,在此之後的產量爲:

waiting for server to shut down……………………………………………………… failed pg_ctl: server does not shut down

再次輸入該命令後:

$pg_ctl restart -m immediate 

它的工作,我得到這個消息:

pg_ctl: old server process (PID: 373) seems to be gone starting server anyway server starting LOG: database system was interrupted; last known up at 2015-07-28 18:15:26 PDT LOG: database system was not properly shut down; automatic recovery in progress LOG: record with zero length at 0/4F0F7A8 LOG: redo is not required LOG: database system is ready to accept connections LOG: autovacuum launcher started

Source