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