2012-12-13 35 views
81

我剛剛使用OS X Server將我的MacMini服務器從Lion Server升級到Mountain Lion。我在去年使用PostgreSQL時遇到了同樣的問題,當時我首先安裝了Lion Server。套接字文件「/var/pgsql_socket/.s.PGSQL.5432」在Mountain Lion中丟失(OS X服務器)

當我嘗試做任何形式的PostgreSQL終端命令我得到很多已經得到了多年來以下臭名昭著的錯誤消息:

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

我試圖當我接到更改_postgres密碼錯誤。我嘗試了幾個命令,但得到了同樣的錯誤。我剛剛重啓我的服務器,但沒有運氣。我以root用戶身份登錄到/ var/pgsql_socket,並且該文件夾爲空。文件夾/ var/pgsql_socket_alt也是空的。

我已經在網上查了一下。然而,幾乎所有我讀過的解決方案,包括堆棧溢出,都建議刪除並重新安裝PostgreSQL。我不知道,但這似乎不是一個合理的選擇,因爲服務器應用程序上的幾個選項使用PostgreSQL。我聯繫了蘋果企業支持部門(沒有達成協議),我被告知我的問題必須由開發人員解決,這些開發人員將投入695美元。

我現在有一個網站,因爲我無法重建它。在這一點上,我不知道該去哪裏尋求幫助。我會繼續在網上查看是否可以找到某些東西。不過,我希望有人能夠快速給我一個答案,以便我可以重建我的數據庫。

更新:2012年12月13日15:33 GMT-6

這裏是我的輸出,PS auwwx | grep的postg:

_postgres  28123 0.0 0.1 2479696 7724 ?? Ss 3:01PM 0:00.04 /Applications/Server.app/Contents/ServerRoot/usr/bin/postgres_real -D /Library/Server/PostgreSQL For Server Services/Data -c listen_addresses= -c log_connections=on -c log_directory=/Library/Logs/PostgreSQL -c log_filename=PostgreSQL_Server_Services.log -c log_line_prefix=%t -c log_lock_waits=on -c log_statement=ddl -c logging_collector=on -c unix_socket_directory=/Library/Server/PostgreSQL For Server Services/Socket -c unix_socket_group=_postgres -c unix_socket_permissions=0770 
server1  28216 0.0 0.0 2432768 620 s000 R+ 3:02PM 0:00.00 grep postg 
_postgres  28138 0.0 0.0 2439388 752 ?? Ss 3:01PM 0:00.01 postgres: stats collector process       
_postgres  28137 0.0 0.0 2479828 1968 ?? Ss 3:01PM 0:00.00 postgres: autovacuum launcher process       
_postgres  28136 0.0 0.0 2479696 544 ?? Ss 3:01PM 0:00.00 postgres: wal writer process       
_postgres  28135 0.0 0.0 2479696 732 ?? Ss 3:01PM 0:00.01 postgres: writer process       
_postgres  28134 0.0 0.0 2479696 592 ?? Ss 3:01PM 0:00.00 postgres: checkpointer process       
_postgres  28131 0.0 0.0 2439388 368 ?? Ss 3:01PM 0:00.00 postgres: logger process 

更新:2012年12月13日18 :10 GMT-6

在激烈的網絡搜索此視頻後發現。我能夠使PostgreSQL正常工作並刪除錯誤。我可以使用pgadmin和phppgadmin進行連接。我正要回到獅子服務器,因爲它非常沮喪。現在我不需要。

http://www.youtube.com/watch?v=y1c7WFMMkZ4

+22

您的問題歸結爲一個事實,即預裝Mac OS X PostgreSQL的'psql'的版本是你安裝的版本之前,你'PATH'。他們在不同的地方尋找unix socket。通過指定'-h localhost'來使用tcp/ip,或者最好修復'PATH',以便首先找到正確的'psql'。蘋果公司奇怪的決定不僅綁定PostgreSQL,而且弄亂它,因此它把事情放在非標準的地方是這個問題的根源。 –

+2

OSX中存在一個持續性問題,打包者決定將unix域套接字放在與正常不同的地方。讓我搜索... BRB ... http://stackoverflow.com/a/8482546/905902 – wildplasser

+0

我在.bashrc中複製了一箇舊的PATH。我還沒有安裝另一個版本的postgreSQL。這是我的PATH語句,其中包含RVM的代碼。如果有人能告訴我要改變它,我會這樣做。當我在/ usr/bin/psql中找到哪個psql時,非常感謝你們的幫助。/usr/local/sbin:/ usr/local/bin:/ usr/sbin:/ usr/bin/psr:/ usr/bin/psql:/ usr/local/sbin:/ usr/bin「 我也以root身份登錄時搜索套接字文件。 –

回答

2

你可以檢查你的postgresql.conf文件?

你的postgres在哪個端口上運行?

我想是不是運行在端口5432.If不將其更改爲5432

或終端使用

psql -U postgres -p YOUR_PORT_NUMBER database_name 
+1

我無法運行終端命令。我犯了同樣的錯誤。我需要幫助找到postgresql.conf文件。運行Lion Server時,我曾經有一個/ var/pgsql文件夾。我想現在已經過去了。我剛剛爲ps grep命令發佈了我的輸出。爲了運行PostgreSQL,我打開了Wiki服務。有人告訴我可以使用sudo serveradmin命令,而無需啓動任何服務器應用程序服務,但它們不起作用。我現在以root身份登錄,所以我應該可以做任何事情:)我在Network Utility中檢查了端口。 5432未使用。 –

0

我花了一段時間,但我能終於在得到這個工作通過提供的建議和其他網絡搜索正在完成。我以前在由Mactasia創建以下YouTube視頻的信息:

http://www.youtube.com/watch?v=y1c7WFMMkZ4

當我做這個我看到.lock爲擴展名的文件。但是,當我嘗試啓動Rails服務器時,仍使用PostgreSQL重新開始使用Rails應用程序時仍然出現錯誤。這次我得到了一個拒絕許可的錯誤。這是當我想起我不僅需要更改plist中的listen_addresses,而且還必須將unit_socket_permissions更改爲0777.我還以root用戶身份登錄,以更改var/pgsql_socket文件夾的權限,以便我可以在用戶級別。 Postgres現在工作正常。我正在從我的SQL備份中重新加載我的數據。

我不明白的是,當我開啓了wiki時,PostgreSQL被認爲是在工作,當時我做了一個sudo serveradmin fullstatus postgres,但我仍然有錯誤。好吧。

258

我可以到以下添加到我的.bash_profile防止錯誤:

export PGHOST=localhost 

這工作because

If you omit the host name, psql will connect via a Unix-domain socket to a server on the local host, or via TCP/IP to localhost on machines that don't have Unix-domain sockets.

您的操作系統支持Unix域套接字,但PostgreSQL的Unix套接字是psql需要或者不存在,或者位於與預期不同的位置。

明確指定主機名爲localhost強制psql使用TCP/IP。設置環境變量PGHOST是實現這一目標的途徑之一。它記錄在psql's manual

+4

@LightBe Corp您應該將此答案標記爲有效。 – McSas

+30

對於那些用Rails應用程序運行的人:你可以在database.yml中指定主機。 – dwhalen

+11

這是什麼樣的魔法?我的意思是,認真。你能解釋一下嗎? –

20

我能夠通過簡單地填寫PostgreSQL主機地址127.0.0.1來解決問題,而不是留下空白。 (Django示例)

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'database_name', 
     'USER': 'database_user', 
     'PASSWORD': 'pass', 
     'HOST': '127.0.0.1', 
     'PORT': '', 
     } 
} 
+1

我現在覺得有點笨,我一直在試圖解決這個問題約2天。在Windows上,我使用'127.0.0.1',但後來我將代碼移至生產環境(Debian 7),並且必須將其更改爲''。 他們給出了這樣一個錯誤信息,導致人們認爲問題可能在其他地方,這有點奇怪。 –

1

我有Django的這個問題。

通過明確地將您的主機名設置爲「localhost」來修復它。

18

嘗試貼在控制檯這樣的:

$ mkdir /var/pgsql_socket/ 

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

最後,我得到了這個答案。 – Abs

+0

好。儘管我想我知道這是爲什麼起作用,但多一點解釋會很有用。這個解決方案比接受的答案要好,只有細節缺失。 – Glutexo

8

打開 'postgresql.conf裏' 在你喜歡的編輯器。尋找變量「unix_socket_directories」,它很可能是這樣的:

unix_socket_directories = '/private/tmp/' 

更改行這樣的:

unix_socket_directories = '/var/pgsql_socket/' 

注意,如果你想在多個目錄逗號分隔的套接字文件他們。

0

文件權限限制在Mac OS擁有的Postgres數據庫上。在重新啓動或重新啓動Postgres後,這些權限會被重置:例如serveradmin啓動postgres。

所以,暫時重置權限或所有權:

sudo chmod o+rwx /var/pgsql_socket/.s.PGSQL.5432 
sudo chown "webUser" /var/pgsql_socket/.s.PGSQL.5432 

權限重置並不安全,因此安裝這樣一個版本,你自己的解決方案的分貝。

6

正如其他人在評論中提到的,這個問題的一個非常簡單的解決方案是在數據庫配置中聲明數據庫'主機'。添加這個答案只是爲了讓讀者更清楚一點。

在Ruby on Rails應用程序,例如,編輯/config/database.yml:

development: 
    adapter: postgresql 
    encoding: unicode 
    database: database_name 
    pool: 5 
    host: localhost 

注:最後一行添加到指定主機。在更新到Yosemite之前,我從不需要用這種方式指定主機。

希望這可以幫助別人。

乾杯

1
apt-get install postgres-xc-client 
apt-get install postgres-xc 
0

先刪除已安裝的Postgres: -

sudo apt-get purge postgr*

sudo apt-get autoremove

然後安裝 '突觸':

sudo apt-get install synaptic

sudo apt-get update

然後安裝的Postgres

sudo apt-get install postgresql postgresql-contrib

1

我做的話做這個:

dpkg-reconfigure locales 

,並選擇您的首選地區

pg_createcluster 9.5 main --start 

(9.5是我的版本的PostgreSQL)

/etc/init.d/postgresql start 

,然後將其字!

sudo su - postgres 
psql 
1
psql: 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"? 

我一直在得到上面的錯誤,並沒有以上的解決方案爲我工作。最後,以下解決方案解決了在Mac OS X我的問題

使用BREW

brew install postgres 

安裝BREW服務

brew tap homebrew/services 

要啓動的Postgres作爲後臺服務

brew services start postgresql 

安裝的Postgres手動停止postgres

brew services stop postgresql 

我們也可以使用BREW服務重新啓動Postgres的

brew services restart postgresql 
3

檢查數據庫的狀態:如果數據庫沒有運行

service postgresql status 

,啓動DB:

sudo service postgresql start 
+0

卡住了上述錯誤,並通過啓動數據庫來解決它。 –

0

我剛剛創建了一個新的羣集,這對我有用,我是usin克(PostgreSQL的)9.3.20:

sudo pg_createcluster 9.3 main --start 
相關問題