无法将PostgreSQL作为Windows服务运行

时间:2009-08-09 11:48:45

标签: 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

永远不会完成执行。但是,如果我在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”,它运行正常。

有什么想法吗?

11 个答案:

答案 0 :(得分:33)

命令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用户,并且它工作正常

答案 1 :(得分:11)

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

答案 2 :(得分:4)

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

答案 3 :(得分:4)

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

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

1。检查旧PG_DATA目录的权限:

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

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

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

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

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

Nota: 我发现使用explorer更容易进行同步,而不是直接从命令行使用cacls

答案 4 :(得分: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

答案 5 :(得分:2)

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

答案 6 :(得分:2)

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

答案 7 :(得分:1)

在尝试初始化数据库集群后,我也遇到了Postgresql抛出和错误的问题。在分析了日志文件并运行了四个小时的命令行脚本之后,我为所有遇到Windows版本问题的人提供了解决方案。

这不是其发生原因的详细描述。我已经在无数的客户端服务器和Windows系统上安装了odoo 10、11、12和13次,这是我第一次遇到这个问题。我不能说是否是因为我在这台机器上安装了MS VS Enterprise和Android Studio或什么。但是下面是有关如何修复它,初始化集群以及在数据文件夹中创建数据库文件的简单答案。

  1. 打开用于PostgreSQL的数据文件夹。 -对于Odoo安装,除非安装时选择了其他位置,否则通常为“ C:\ Program Files(x86)\ Odoo 13.0 \ PostgreSQL”。

  2. 从此文件夹中删除任何文件或所有文件-否则,运行initdb.exe时会出现错误

  3. 右键单击数据文件夹并打开其属性。单击“安全性”选项卡,然后单击底部的高级按钮。

  4. 您需要将此文件夹的所有者更改为openpgsvc。单击更改,然后输入openpgsvc,然后单击确定。完成后,单击下面的复选框,说您希望此更改也影响具有此容器的容器。

  5. 然后在“权限”选项卡上,单击底部的“添加”按钮。您需要将openpgsvc添加为用户,并赋予该用户完整的权限。单击“应用”,然后单击“确定”以关闭所有文件夹属性。

  6. 现在您需要打开cmd.exe-打开后,我们将调用initdb.exe并将一些值也传递给它。

  7. 首先运行chdir,然后将工作目录更改为initdb.exe的位置。对我来说,在Windows 10机器上运行odoo 13的位置是这个。.

“ C:\ Program Files(x86)\ Odoo 13.0 \ PostgreSQL \ bin”

  1. 列表中还需要传递一个变量来使这项工作有效。 initdb.exe包含在呼叫中

Postgres数据目录:“ C:\ Program Files(x86)\ Odoo 13.0 \ PostgreSQL \ data”

对于我的安装,带有参数的最终结果如下所示:

“ C:\ Program Files(x86)\ Odoo 13.0 \ PostgreSQL \ bin \ initdb.exe” -D“ C:\ Program Files(x86)\ Odoo 13.0 \ PostgreSQL \ data”

  1. 点击Enter并使其撕裂。该命令的输出应如下所示。 Cmd.exe running initdb.exe script

答案 8 :(得分:0)

在Windows 7上安装PostgreSQL 10(是的,时钟滴答作响……)。我首先尝试了最新版本11,但该版本完全无法安装...对于Windows用户而言,不是一个好兆头。无论如何。

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

我的案情

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

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

  

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

,但是安装能够完成。我发现了两个有关先前错误的页面,OpenCV Documentationhere,但它们似乎与我的情况无关,因此我启动了pgAdmin,然后在左侧的“浏览器”中看到服务器不在“活跃。

我尝试从此处启动它(必须输入主密码),但是它立即再次变为非活动状态。因此,我尝试使用Windows服务面板来启动“ postgresql-x64-10”,这并不高兴。我从该面板复制了命令,并将其粘贴到Windows控制台(cmd.exe)中,我终于在其中收到了

  

错误1063。

搜索我发现了这个相关问题,并确信问题出在权限方面。

解决方案适合我的情况

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

答案 9 :(得分:0)

sc create "postgresql-9.2" binPath= "\"C:/Program Files (x86)/PostgreSQL/9.2/bin/pg_ctl.exe\" runservice -N \"postgresql-9.2\" -D \"C:/Program Files (x86)/PostgreSQL/9.2/data\" -w" DisplayName= "postgresql-9.2" start= auto

在以管理员身份运行的CMD上尝试此操作 (添加参数取决于您的版本)

答案 10 :(得分:-1)

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

查看图片以便更好地理解

enter image description here