2012-06-06 190 views
3

我一直在這個相同的應用程序中使用相同的Postgres數據庫一個月沒有問題,並且我沒有更改數據庫中的任何內容,然後該錯誤隨機出現今天起。然而,今天的Postgres隨機開始拋出這個錯誤,當我嘗試「軌道的」(我跑CREATEDB或CREATEUSER時得到相同類型的錯誤):Postgres剛剛隨機停止工作(Rails,PGSQL.5432)

退出 /Users/Joe/.rvm/gems/ruby- 1.9.2-p290/gems/activerecord-3.2.2/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:在`initialize'中:無法連接到服務器:沒有這樣的文件或目錄(PG :: Error) 服務器在本地運行,並在Unix域套接字「/tmp/.s.PGSQL.5432」上接受 連接?

真奇怪的是,我的朋友昨天發生了完全相同的錯誤(在同一個應用程序上工作),並且由他從http://nextmarvel.net/blog/2011/09/brew-install-postgresql-on-os-x-lion/運行腳本修復。運行腳本後,他卸載並重新安裝PG寶石,使所有工作。但是,他正在運行OS X Lion,而且我正在運行Snow Leopard,因此腳本不適用於我。

任何想法(1)爲什麼這將隨機開始發生和(2)如何解決它?

+0

PostgreSQL是否正在運行?你重新啓動並忘記啓動它嗎? –

+0

是的,它正在運行。我們通過運行'午餐開始postgres'命令進行驗證,輸出結果表示PosgresSQL正在運行。 –

+0

你能用'psql'連接到它嗎? –

回答

1
  • 可能刪除了某些東西/tmp/.s.PGSQL.5432套接字 - 例如/tmp/清潔服務。
  • 也許你可以使用:host => 'localhost'作爲PG::Connection.new()的連接參數進行連接 - 它將避免定位Unix套接字或文件權限問題的正確路徑的問題。
  • 如果你不想使用localhost(它可能是比插座慢一點),那麼你可以找到它使用lsof | grep PGSQL命令,操作系統管理員 - 如果它是例如/var/run/postgres/.s.PGSQL.5432 - 你會用:host => '/var/run/postres/'
+0

湯姆,我知道這是舊的答案,但我有完全相同的問題,你能告訴我如何停止鏈接/tmp/.s.PGSQL.5432停止在系統重新啓動後被刪除嗎?因爲現在我必須通過「sudo ln -s /tmp/.s.PGSQL.5432/var/run/postgresql/.s.PGSQL.5432」 – iCyborg

+0

手動創建鏈接iCyborg:您無法阻止/ tmp /清除因爲它可能是一個tmpfs(內存中的一個目錄)。您可以將'ln -s ...'添加到'/etc/rc.d/rc.local'啓動腳本中。 – Tometzky

0

我在啓動rails時沒有收到相同的錯誤(沒有這樣的文件或目錄)。 PostgreSQL one-click installer重新安裝postgres並重新啓動解決了問題。

在我的情況下,這發生在安裝Mountain Lion後,它可能清理了tmp目錄。

2

今天我有類似的問題,雖然在我的情況下postgres(通過MacOS 10.8自制軟件安裝)沒有運行,但我無法啓動或重新啓動它。看來,由於碰撞殭屍擋住插座,解決它,我做了以下

lsof -i :5432 

這表明進程阻塞的PID,我只需用

kill -9 PID 

,並把它打死了postgres重新啓動罰款。

HTH

0

我面臨同樣的問題,當我檢查server.log我可以ee它無法找到var/postgres文件夾和一些conf文件。

我這樣做,但是我在這種情況下

brew uninstall postgres 
brew install postgres 
initdb `brew --prefix`/var/postgres/data -E utf8`` 

這對我來說,一切運作良好,恢復正常丟失了我的數據。