11

我试图让 Postgres 9.2.4 在 Windows 7 上作为服务运行。安装 postgres 后,该服务运行良好。但是,在将 postgres 设置为另一个程序的服务器后,该服务停止运行。当我现在尝试启动服务时,我收到一条消息:

“本地计算机上的 postgresql-x64-9.2 - PostgreSQL Server 9.2 服务启动然后停止。如果某些服务没有被其他服务或程序使用,它们会自动停止。”

当我尝试运行应该使用数据库服务器的程序时,我收到此错误:

“尝试登录或创建生产数据库时遇到问题。详细信息:无法连接到服务器;无法连接到远程套接字。应用程序现在必须关闭”

我在打开同一个程序时也遇到过这个错误:

“尝试登录或创建生产数据库时遇到问题。详细信息:致命:无法加载 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

根据网上的许多建议,我尝试将顶行编辑为许多不同的替代方案(host all all tr​​ust / host all 127.0.0.1/32 trust / host all 192.168.0.100/24 trust 等)。这对我来说很有意义,因为日志文件说 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 中记录更多的错误文件,以查看之前声明的错误是否已消失或更改为其他内容,但没有记录更多文件。

我已经在网上进行了几天的故障排除,但我发现没有任何效果。很抱歉有这么长的问题,但我想彻底并包括所有相关信息。如果有人能对这个问题有所了解或提供建议,我将不胜感激。

4

8 回答 8

10

Windows 机器不支持本地条目。见E.20.3.1.3。身份验证

在不支持 Unix 套接字连接的平台上拒绝 pg_hba.conf 中的本地行 (Magnus Hagander)

以前,这些台词被默默地忽略了,这可能会令人惊讶。这使得行为更像其他不受支持的情况。

更改您的配置:

local  all    all     trust

至:

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

有关详细信息,请参阅19.1。pg_hba.conf 文件

于 2016-01-20T14:55:07.413 回答
6

在 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。

好的提示来自分析事件查看器:打开 Windows 资源管理器,选择“计算机”,右键单击“管理”,选择“事件查看器”,等待“管理事件摘要”加载,打开“错误”节点,找到“源”列中的“PostgreSQL”条目并双击它。Postmaster.pid 文件中有提示信息是虚假数据。

我希望这些信息可以帮助你。干杯! 埃德。

于 2014-03-04T10:50:44.590 回答
2

问题是win7下这个postgres版本不能处理本地连接。我不得不在我的本地计算机上非常紧急地使用 pg,所以我不太关心安全性,所以这可能不是现场环境的最佳解决方案。但是我的本地电脑就足够了。

我从 pg_hba.conf 中删除了所有其他未注释的行,只留下以下一行:

host    all             all             ::1/0                 trust

在此之后,我可以通过命令行连接。

我不明白为什么手册没有更多地说明这个问题。我很确定很多人都有这个问题。

于 2014-02-11T22:35:49.457 回答
2

我有同样的问题。对我有用的是:

  1. 打开 postgresql.conf 文件(通常位于 C:\Program Files\PostgreSQL\9.4\data);
  2. 注释行号 147 ( shared_preload_libraries = '$libdir/plugins/plugin_debugger.dll')
于 2015-08-21T19:12:58.587 回答
2

在这种情况下,最好的办法是分析操作系统日志。对于 Windows,请检查“事件查看器”->“应用程序”。由于各种原因,可能会发生此类错误。就我而言,postgres 已经在运行。我在 Windows 日志中找到了该信息。

于 2016-05-01T08:30:01.077 回答
1

所以,快速免责声明,我现在在 Linux 上运行 PostgreSQL。但是,几年前,我确实在 Windows 上运行过它。我似乎记得这个问题。我认为线索在这一行:

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

本地连接是 Unix 的东西。您正在使用窗户。所以“这个版本不支持”。尝试将本地更改为 localhost 并重新启动。这是Postgres 邮件列表上发布的类似问题的输入链接描述:

于 2013-06-04T02:50:24.857 回答
1

“本地计算机上的服务启动然后停止,如果没有被其他服务或程序使用,某些服务会自动停止。”</p>

现在我将解释如何解决本地计算机上的服务启动然后停止,如果没有被其他服务或程序使用,某些服务会自动停止。

为了解决这个问题,我们有两种方法

第一种方式

开始 --> 运行 --> 输入 Services.msc 并单击 Enter 按钮现在您将获得计算机中的所有服务,然后选择您的服务并右键单击该服务并转到属性

之后,在选择本地系统帐户中打开选择登录选项卡,然后单击确定现在您的问题将解决

于 2018-05-08T19:26:29.253 回答
0

我在 postgresql.conf 中犯了一个错误。我做过

max_prepared_transactions = 16*max_connections  # zero disables the feature

在这个文件之前的位置,

max_connections=100

这是无法做到的,以下工作:

max_prepared_transactions = 1600    # zero disables the feature
于 2017-10-09T18:57:24.483 回答