0

我正在尝试针对 PostgreSQL 数据库设置运行 Ruby on Rails 的 Windows XP 测试代理。我已经使用默认设置安装了适用于 Windows 的 PostgreSQL 9.2。但是,当我尝试从服务控制面板启动服务时,会出现以下错误消息(与我尝试将其设置为哪个用户无关):

   The postgres-9.2 -PostgreSQL Server 9.2 service on Local Computer started and then stopped. Some services 
   stop automatically if they have work to do, for example, the Performance Logs and Alerts service.

如果我尝试从命令行启动它(无论是 cmd.exe 还是 git bash 都无关紧要):

   E:\PostgreSQL\9.2\bin\pg_ctl.exe start  -D E:\PostgreSQL\9.2\data

它将声称:

   server starting

但是它将无法启动(rake db:migrate 将报告服务器未运行,任务管理器中缺少 postgresql 进程,服务在服务列表中列为关闭,并且

  E:\PostgreSQL\9.2\bin\pg_ctl.exe stop  -D E:\PostgreSQL\9.2\data

将报告

  pg_ctl: PID file "E:/PostgreSQL/9.2/data/postmaster.pid" does not exist Is server running?

尝试通过 pg_ctl 将其作为服务器启动时:

  E:\PostgreSQL\9.2\bin\pg_ctl.exe runservice  -D E:\PostgreSQL\9.2\data

失败:

  pg_ctl: could not start service PostgreSQL: error code 1063

编辑:

pg_hba 的内容:

 # TYPE  DATABASE        USER            ADDRESS                 METHOD
 local   all             all                all                  trust
 # IPv4 local connections:
 host    all             all                all                  trust
 host    all             all             127.0.0.1/32            trust
 # IPv6 local connections:
 #host    all             all             ::1/128                trust
 # Allow replication connections from localhost, by a user with the
 # replication privilege.
 #host    replication     all                all                 trust
 #host    replication     postgres        127.0.0.1/32           trust
 #host    replication     postgres        ::1/128                trust

根据以下评论检查 pg_log:

 2012-10-28 22:47:44 PDT LOG:  local connections are not supported by this build
 2012-10-28 22:47:44 PDT CONTEXT:  line 78 of configuration file "E:/PostgreSQL/9.2/data/pg_hba.conf"
 2012-10-28 22:47:44 PDT FATAL:  could not load pg_hba.conf

第 78 行是

 local   all             all                all                  trust

作为服务运行时(无论是通过 pg_ctl runservice 还是从服务控制面板),仍然会发生相同的错误。然而 pg_ctl start 现在启动 postgres 没有发生任何事件。

我会选择“足够好”

PS:事件日志条目只是说“等待服务器启动超时”

4

2 回答 2

5

更新修改后的问题:

删除以pg_hba.conf开头的行local。它们与 PostgreSQL 不支持的 UNIX 套接字连接有关。然后,除非还有其他问题,否则您应该能够启动 PostgreSQL。pg_hba.conf很可能您从一个讨论 Mac OS X 或 Linux 上的 PostgreSQL 的站点复制并粘贴了一个local支持连接的站点。

如果修复后 Pg 仍然无法启动pg_hba.conf,请再次检查日志,看看它还抱怨什么。

顺便说一句,一般来说,我不建议尝试将 PostgreSQL 作为服务和通过pg_ctl同一数据目录运行。您可能会遇到难以解决且烦人的文件系统权限问题,尤其是在 Windows 上。


除了@mvp 的建议之外,您还可能尝试在属于管理员组成员的用户下启动 PostgreSQL。这是不允许的,并且会失败。我不同意这项政策,但目前就是这样。

默认情况下,9.2 设置为在 NetworkService 下运行,所以这应该不是问题。如果您将其配置为在不同的用户帐户下运行,这可能是您的问题,也可能是手动运行时的问题。

更有可能的是,手动启动它时,您只是没有对数据目录的文件系统权限。

顺便说一句,如果E:\是 FAT32,那就是你的问题。不支持 FAT32。您必须使用 NTFS。

而不是在黑暗中刺伤,您应该真正查看服务器登录E:\PostgreSQL\9.2\data\pg_log和事件查看器以查看导致它无法启动的原因。

于 2012-10-29T06:29:14.947 回答
3

你一定有权限问题。Windows 上的 PostgreSQL 希望以 postgres 用户身份运行。安装程序将自动创建一个并为其分配新密码。

对此几乎没有解决方案。如果您刚刚安装了这个数据库,那么最简单的解决方案是卸载 Postgres,删除本地 postgres 用户(通过control userpasswords2),最后再次安装 Postgres(确保您对此框有管理员权限)。祝你好运!

于 2012-10-29T05:59:32.843 回答