无法将PostgreSQL作为Windows服务运行

Dav*_*vid 25 postgresql service

我在Windows服务中有这个:

C:/Program Files/PostgreSQL/8.4/bin/pg_ctl.exe runservice -N "postgresql-8.4" -D "D:/PostgreSQL/8.4/data" -w
Run Code Online (Sandbox Code Playgroud)

它永远不会完成执行.但是,如果我在dos shell上执行此操作:

C:/Program Files/PostgreSQL/8.4/bin/pg_ctl.exe start -N "postgresql-8.4" -D "D:/PostgreSQL/8.4/data" -w
Run Code Online (Sandbox Code Playgroud)

请注意,我只将"runservice"更改为"start",它运行正常.

任何的想法?

Jay*_*zzi 35

命令runservice只能由服务管理器执行

为了修复我的localhost windows 7以启动postgres作为服务我使用以下命令来启动数据

 pg_ctl -D "C:\Program Files\PostgreSQL\9.1\data" start 
Run Code Online (Sandbox Code Playgroud)

然后检查状态是否有错误

 pg_ctl -D "C:\Program Files\PostgreSQL\9.1\data" status 
Run Code Online (Sandbox Code Playgroud)

如果你得到错误1063,它超过可能的权限,我执行以下命令

 cacls "C:\Program Files\PostgreSQL\9.1\data" /E /T /C /G postgres:F
Run Code Online (Sandbox Code Playgroud)

然后重新开始/状态,它显示一切正常,但仍然服务经理不会启动服务

因此,在Services-> postgresql-> options-> logon中我将登录设置为本地系统帐户而不是postgres用户,并且它工作正常

  • 这对我也有用。PostgreSQL 9.5.2。简而言之:在服务中选择服务并查看其属性并将登录更改为本地系统 (2认同)
  • 我使用了“NETWORK_SERVICE”用户,而不是“postgres”用户。有关详细信息,请参阅此处:http://stackoverflow.com/a/38563535/363573 (2认同)

pst*_*ton 11

这发生在我身上,因为我将我的数据目录设置为postgres windows用户帐户无法访问的某个地方.


Tom*_*Tom 6

系统崩溃后,我在 Windows 中遇到了这个问题。运行第一个命令在C:\Program Files\PostgreSQL\9.1\data\postmaster.pid. 删除那个文件就成功了。参考。


Ste*_*han 6

手动移动数据库数据文件(PG_DATA目录)而不重新创建所有必需的权限后,我遇到了相同的问题。

这是我解决问题的方法:

1.检查对旧PG_DATA目录的权限:

cacls "c:\path\to\old\pgdata\dir"
Run Code Online (Sandbox Code Playgroud)

2.检查新PG_DATA目录的权限:

cacls "d:\path\to\NEW\pgdata\dir"
Run Code Online (Sandbox Code Playgroud)

3.比较来自1.和2的输出。

找到用户和/或权限之间的差异,然后进行同步。

注意:我发现将其explorer用于同步步骤比cacls直接从命令行使用更容易。


Mag*_*der 4

您需要检查日志文件和 Windows 事件日志以获取有关问题所在的一些提示。如果那里什么都没有,您需要分解诸如进程监视器之类的东西并获取其挂起位置的堆栈跟踪。