【问题标题】:Unable to run PostgreSQL as Windows service无法将 PostgreSQL 作为 Windows 服务运行
【发布时间】:2010-11-18 02:01:36
【问题描述】:

我的 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


    【解决方案1】:

    命令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 用户,瞧,它起作用了

    【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这正是发生这种情况的原因!您必须在设置期间更改数据目录以避免此问题
    • 对于普通读者来说,这里有一个正确设置数据目录权限的简单方法:stackoverflow.com/a/38563535/363573.
    • 需要注意的是,默认情况下,Windows 上的 PostgreSQL 似乎使用 NetworkService 作为用户。
    【解决方案3】:

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

    【讨论】:

      【解决方案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. 的输出。

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

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

      【讨论】:

        【解决方案5】:

        如果您更改了 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
        

        【讨论】:

          【解决方案6】:

          您需要检查您的日志文件和 Windows 事件日志以了解问题所在。如果那里什么都没有,你需要打破进程监视器之类的东西并获取它挂起的位置的堆栈跟踪。

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              【解决方案8】:

              在尝试初始化数据库集群后,我也遇到了 postgresql 抛出和错误的问题。在分析了日志文件并运行了 4 个小时的命令行脚本后,我已经为任何遇到此问题的 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

              【讨论】:

                【解决方案9】:

                在 Windows 7 上安装 PostgreSQL 10(是的,时间在流逝……)。我首先尝试了完全无法安装的最新版本 11……这对 Windows 用户来说不是一个好兆头。无论如何。

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

                我的案例详情

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

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

                未能将 SQL 模块加载到数据库集群中

                但安装能够完成。我发现了两页关于先前错误的页面,herehere,但它们似乎与我的情况无关,所以我刚刚启动了 pgAdmin,在左侧的“浏览器”中,看到服务器没有处于活动状态。

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

                错误 1063。

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

                适合我的情况的解决方案

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

                【讨论】:

                  【解决方案10】:
                  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 上试试这个以管理员身份运行 (添加参数取决于您的版本)

                  【讨论】:

                    【解决方案11】:

                    确保C:\ 中没有错误的空文件Program,例如C:\Program

                    在这种情况下,每当您登录 Windows 时,资源管理器都会发出警告。

                    File Name Warning
                    -----------------
                    There is a file or folder on your computer called "C:\Program" which
                    could cause certain applications to not function correctly. Renaming it
                    to "C:\Program1" would solve this problem. Would you like to rename
                    it now?
                    

                    【讨论】:

                      【解决方案12】:

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

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

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 1970-01-01
                        • 2016-05-18
                        • 1970-01-01
                        • 1970-01-01
                        • 2014-06-21
                        • 2015-03-08
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多