9

我想讓Postgres 9.2.4在Windows 7上作爲服務運行。安裝postgres後,服務運行良好。但是,將postgres設置爲另一個程序的服務器後,該服務停止運行。當我現在嘗試啓動服務,我得到一個消息說:PostgreSQL 9.2.4(Windows 7) - 服務無法啓動,「無法加載pg_hba.conf」

「PostgreSQL的-x64-9.2 - 本地 計算機上PostgreSQL服務器9.2服務啓動,然後停止一些服務自動停止,如果 他們沒有被其他服務或程序使用。「

當我嘗試運行應該使用數據庫服務器的程序,我得到這個錯誤:

「的一個問題是在試圖登錄或創建 生產數據庫中遇到詳情:莫非無法連接到服務器,可能 無法連接到遠程套接字應用程序現在必須關閉」

我曾經也遇到過這樣的錯誤,一旦同時打開同一個程序:

「試圖登錄或創建生產數據庫時遇到問題。詳細信息:FATAL:無法加載的pg_hba.conf的 應用程序必須立即關閉」

我已經嘗試運行該服務登錄作爲本地系統賬戶,以及我自己的帳戶(在Postgres服務屬性) 。無濟於事我還試圖重新啓動我的電腦有很多故障排除後在網上,我得知要檢查好東西是pg_log文件下面是最新的pg_log項的內容:。

2013-05-29 14:59:45 MDT LOG: database system was interrupted; last known up at 2013-05-29 14:58:01 MDT 
2013-05-29 14:59:45 MDT LOG: database system was not properly shut down; automatic recovery in progress 
2013-05-29 14:59:45 MDT LOG: record with zero length at 0/175BB98 
2013-05-29 14:59:45 MDT LOG: redo is not required 
2013-05-29 14:59:45 MDT LOG: database system is ready to accept connections 
2013-05-29 14:59:45 MDT LOG: autovacuum launcher started 
2013-05-29 15:07:00 MDT LOG: local connections are not supported by this build 
2013-05-29 15:07:00 MDT CONTEXT: line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf" 
2013-05-29 15:07:00 MDT FATAL: could not load pg_hba.conf 
2013-05-29 15:07:00 MDT LOG: local connections are not supported by this build 
2013-05-29 15:07:00 MDT CONTEXT: line 1 of configuration file "C:/PostgreSQL/data/pg_hba.conf" 
2013-05-29 15:07:00 MDT FATAL: could not load pg_hba.conf 
2013-05-29 15:09:03 MDT LOG: received fast shutdown request 
2013-05-29 15:09:03 MDT LOG: aborting any active transactions 
2013-05-29 15:09:03 MDT LOG: autovacuum launcher shutting down 
2013-05-29 15:09:03 MDT LOG: shutting down 
2013-05-29 15:09:03 MDT LOG: database system is shut down 

似乎遇到與pg_hba.conf文件有關的問題,如下所示:

local all all trust 
host all all 127.0.0.1 255.255.255.255 trust 
host all all 0.0.0.0 0.0.0.0 trust 

根據網上的許多建議,我嘗試編輯頂端行到一些不同的選擇(主機所有所有信任/主機所有127.0.0.1/32信任/主機所有192.168.0.100/24信任等) 。這對我來說很有意義,因爲日誌文件說本地連接不被postgres支持,並且也指向該行。但是,我的更改沒有任何影響。每次更改後我都嘗試重新啓動計算機,但沒有任何區別。

當我搜索pg_hba.conf文件通常的樣子的例子時,這些例子與我的文件略有不同。我注意到在PostgreSQL程序文件中,除了pg_hba.conf之外,還有一個「20130529-150444-old-pg_hba.conf」文件,這個文件看起來更像我在網上找到的例子。此文件的註釋若干行,這些最後幾行之前:

# TYPE DATABASE  USER   ADDRESS     METHOD 

# IPv4 local connections: 
host all    all    127.0.0.1/32   md5 
# IPv6 local connections: 
host all    all    ::1/128     md5 
# Allow replication connections from localhost, by a user with the 
# replication privilege. 
#host replication  postgres  127.0.0.1/32   md5 
#host replication  postgres  ::1/128     md5 

我希望,這是原來的pg_hba.conf文件,而且如果我更換了新的文件與舊的內容,Postgres的會重新開始工作。沒有這樣的運氣。我一直希望能夠在pg_log中記錄更多的錯誤文件,以查看前面說過的錯誤是否已經消失或者更改爲其他內容,但是沒有更多的文件被記錄。

我一直在線疑難解答幾天,沒有發現我的工作。對不起,有這麼長的問題,但我想徹底,幷包括所有相關信息。如果有人能夠解決這個問題或提供建議,我將不勝感激。

回答

0

所以,快速免責聲明,我現在在Linux上運行PostgreSQL。但是,多年前,我在Windows上運行過它。我似乎記得這個問題。我認爲線索是這樣的:

2013-05-29 15:07:00 MDT LOG: local connections are not supported by this build 

本地連接是Unix的事情。你正在使用Windows。所以「不受此構建支持」。嘗試將本地更改爲本地主機並重新啓動。這裏有一個enter link description here到Postgres郵件列表上發佈的類似問題:

2

問題是,這個win7下的postgres版本無法處理本地連接。我必須在本地計算機上非常緊急地使用pg,所以我不在乎安全性太高,所以這可能不是實時環境的最佳解決方案。但我的本地PC已經足夠了。

我刪除從pg_hba.conf的其他所有未註釋行,並僅在以下一個左:

host all    all    ::1/0     trust 

在此之後,我可以通過命令行進行連接。

我不明白爲什麼手冊沒有提到這個問題。我很確定很多人都有這個問題。

+0

謝謝,這個工作對我來說,雖然增加下面一行包括我的本地IP(從本地虛擬機連接)做了訣竅:'主機全部192.168.1.49/32 md5' –

+0

這是唯一的解決方案,爲我工作。謝謝! – profimedica

+0

當我嘗試啓動postgres時,在conf文件中使用這個或任何ipv4變體都會導致相同的錯誤。 – Amalgovinus

5

在Windows 7機器上安裝Postgresql 8.3後,我遇到了這個問題。 最初它正常工作,但突然停止(可能在一些Windows更新後)。 許多試用者都改變了權限,但它沒有使其工作。 幾個月後,我在一個空的文件中發現了問題,同時它應該有一些數據。 驗證此路徑:C:\ Program Files(x86)\ Postgresql \ 8.3 \ data \(其中8.3必須替換爲您的版本號)。 檢查文件Postmaster.pid是否爲空(使用寫字板或記事本打開它)。 如果它爲空,請將其重命名爲_Postmaster.pid(或其他名稱)。 轉到開始菜單,然後在命令框中鍵入services.msc 按Enter鍵 找到PostgreSQL數據庫的條目 雙擊它 點擊開始按鈕 如果該服務啓動時,一個新的Postmaster.pid將創建(有一些數據) 您可以在上面指出的路徑中檢查它。

好的提示來自分析事件查看器: 打開Windows資源管理器,選擇「計算機」,右鍵單擊「管理」,選擇「事件查看器」,等待「管理事件摘要」加載,打開「錯誤「節點,找到」源「列中的」PostgreSQL「條目並雙擊它。 Postmaster.pid文件中有提示通知僞造數據的提示。

我希望這些信息能幫助你。 乾杯! Ed。

+0

我有不同的問題,但事件查看器提示+1! –

2

我遇到了同樣的問題。對我有效的是:

  1. 打開postgresql.conf文件(通常位於C:\ Program Files \ PostgreSQL \ 9。4個\數據);
  2. 註釋行號147(shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll'
3

本地項不支持在Windows機器上。見E.20.3.1.3. Authentication

拒絕在不支持 的Unix套接字連接(馬格努斯Hagander)

以前,這樣的線被靜靜地忽略掉,這可能是令人驚訝的平臺pg_hba.conf中的本地線。 這使得行爲更像其他不受支持的情況。

local all all  trust 

到:

從更改配置

host all all 127.0.0.1/32 trust 
host all all ::1/128  trust 

欲瞭解更多信息,請諮詢19.1. The pg_hba.conf File

2

在這種情況下,最好的辦法是分析操作系統日誌。對於窗口,請選中「事件查看器」 - >「應用程序」。 這種錯誤可能會因各種原因而發生。在我的情況下,postgres已經在運行。我在Windows日誌中發現了這些信息。

0

我在postgresql.conf中犯了一個錯誤。我做了

max_prepared_transactions = 16*max_connections # zero disables the feature 

在這個文件中,其中前有,

max_connections=100 

這不能做,並以下工作:

max_prepared_transactions = 1600 # zero disables the feature