无法将PostgreSQL作为Windows服务运行

问题描述 投票:23回答:9

我在Windows服务中有这个:

C:/Program Files/PostgreSQL/8.4/bin/pg_ctl.exe runservice -N "postgresql-8.4" -D "D:/PostgreSQL/8.4/data" -w

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

C:/Program Files/PostgreSQL/8.4/bin/pg_ctl.exe start -N "postgresql-8.4" -D "D:/PostgreSQL/8.4/data" -w

请注意,我只将“runservice”更改为“start”,它运行正常。

任何的想法?

postgresql service
9个回答
34
投票

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

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

 pg_ctl -D "C:\Program Files\PostgreSQL\9.1\data" start 

然后检查状态是否有错误

 pg_ctl -D "C:\Program Files\PostgreSQL\9.1\data" status 

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

 cacls "C:\Program Files\PostgreSQL\9.1\data" /E /T /C /G postgres:F

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

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


11
投票

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


5
投票

我在moving manually the database data files(PG_DATA目录)之后遇到了同样的问题而没有重新创建所有必要的权限。

以下是我解决问题的方法:

1. Check permissions on old PG_DATA directory:

cacls "c:\path\to\old\pgdata\dir"

2. Check permissions on new PG_DATA directory:

cacls "d:\path\to\NEW\pgdata\dir"

3. Compare outputs from 1. and 2.

找出用户和/或权限之间的差异,然后同步它们。

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


4
投票

系统崩溃后我在Windows中遇到了这个问题。运行第一个命令在C:\Program Files\PostgreSQL\9.1\data\postmaster.pid中显示无效数据。删除该文件就可以了。 Reference.


3
投票

如果你改变了pg_hba.conf,也许你错过了文件中的某个地方。例如,在该文件中IP之后必须有CIDR。它必须像192.168.1.100/32

如果你忘了放32,那么服务器不会重启。

调查启动日志可能是一个线索。对于pg_hba.conf中的问题,您可以看到如下内容:

2018-11-13 00:39:34.841 PST [8284] FATAL:  could not load pg_hba.conf
2018-11-13 00:39:34.842 PST [8284] LOG:  database system is shut down

2
投票

您需要检查日志文件和Windows事件日志,以了解问题的一些提示。如果那里什么都没有,你需要打破像Process Monitor这样的东西,并获得它挂起的堆栈跟踪。


2
投票

我以前遇到过这个问题,并且安装程序没有正确地为该服务运行的用户设置权限。


0
投票

安装PostgreSQL 10在Windows 7上(是时钟正在滴答......)。我首先尝试了最新版本11,完全无法安装......对Windows用户来说不是一个好兆头。无论如何。

快速回答:将Windows服务面板中的帐户从“网络”更改为“本地”。

我的案例详情

在安装过程中,我在用户配置文件夹中创建/选择了一个数据文件夹,因为显然默认情况下,在程序文件夹中建议的文件夹不起作用,如果有效,那么将数据放在这里是个很好的主意(我不知道)不知道在Unix / Linux上是否通常这样做,但对于Windows而言,它是不允许长时间使用的。

最后(填充数据集群时)我收到一个错误:

无法将SQL模块加载到数据库群集中

但安装能够完成。我找到了两个关于以前错误的页面,herehere,但它们似乎与我的情况无关,所以我刚刚启动了pgAdmin,并在左侧的“浏览器”中看到服务器未激活。

我试图从这里开始(必须输入主密码),但它立即再次失效。所以我尝试使用Windows服务面板启动“postgresql-x64-10”,没有任何乐趣。我从这个面板复制了命令并将其粘贴到Windows控制台(cmd.exe)中,我终于收到了这个

错误1063。

搜索我发现了这个相关问题,并确信问题与权限有关。

解决方案适用于我的案例

在服务面板中,我按照@AlexanderRios的评论中的建议,将用于启动服务的帐户从网络服务更改为本地系统。


-1
投票

打开pgAdmin III,然后在右窗格中找到服务器,然后右键单击并连接,输入密码。连接后,转到浏览器并刷新ODOO。问题解决了。

查看图片以获得更好的理解

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.