我在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”,它运行正常。
任何的想法?
命令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用户,并且它工作正常
这发生在我身上,因为我将我的数据目录设置为postgres windows用户帐户无法访问的某个地方。
我在moving manually the database data files(PG_DATA目录)之后遇到了同样的问题而没有重新创建所有必要的权限。
以下是我解决问题的方法:
cacls "c:\path\to\old\pgdata\dir"
cacls "d:\path\to\NEW\pgdata\dir"
找出用户和/或权限之间的差异,然后同步它们。
注意:我发现使用explorer
进行同步步骤比使用命令行直接使用cacls
更容易。
系统崩溃后我在Windows中遇到了这个问题。运行第一个命令在C:\Program Files\PostgreSQL\9.1\data\postmaster.pid
中显示无效数据。删除该文件就可以了。 Reference.
如果你改变了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
您需要检查日志文件和Windows事件日志,以了解问题的一些提示。如果那里什么都没有,你需要打破像Process Monitor这样的东西,并获得它挂起的堆栈跟踪。
我以前遇到过这个问题,并且安装程序没有正确地为该服务运行的用户设置权限。
安装PostgreSQL 10在Windows 7上(是时钟正在滴答......)。我首先尝试了最新版本11,完全无法安装......对Windows用户来说不是一个好兆头。无论如何。
快速回答:将Windows服务面板中的帐户从“网络”更改为“本地”。
我的案例详情
在安装过程中,我在用户配置文件夹中创建/选择了一个数据文件夹,因为显然默认情况下,在程序文件夹中建议的文件夹不起作用,如果有效,那么将数据放在这里是个很好的主意(我不知道)不知道在Unix / Linux上是否通常这样做,但对于Windows而言,它是不允许长时间使用的。
最后(填充数据集群时)我收到一个错误:
无法将SQL模块加载到数据库群集中
但安装能够完成。我找到了两个关于以前错误的页面,here和here,但它们似乎与我的情况无关,所以我刚刚启动了pgAdmin,并在左侧的“浏览器”中看到服务器未激活。
我试图从这里开始(必须输入主密码),但它立即再次失效。所以我尝试使用Windows服务面板启动“postgresql-x64-10”,没有任何乐趣。我从这个面板复制了命令并将其粘贴到Windows控制台(cmd.exe)中,我终于收到了这个
错误1063。
搜索我发现了这个相关问题,并确信问题与权限有关。
解决方案适用于我的案例
在服务面板中,我按照@AlexanderRios的评论中的建议,将用于启动服务的帐户从网络服务更改为本地系统。