【问题标题】:Postgresql query did not terminate, after restart the service postgresql doesn't startPostgresql 查询没有终止,重启后服务 postgresql 没有启动
【发布时间】:2016-05-06 02:40:56
【问题描述】:

在我的工作中,我正在运行一个复杂的查询。我取消了它,昨天回家了。今天早上在后面的查询是不可能被终止的,同样具有“终止后端”功能。我的一位同事重新启动了安装 postgres 的主机。机器重新启动后,postgres 数据库服务器将无法启动。

在我的日志文件中,我看到了错误:

'pg_ctl: 这个数据目录似乎正在运行一个预先存在的 postmaster'

我不确定如何处理这个问题。我可以尝试修复它或尝试从保存文件中推断数据。采取什么最合乎逻辑的步骤是什么,你知道如何解决这个问题吗?

之前它给出了这个错误信息:

2016-01-28 15:52:33 GMT 致命:锁定文件“postmaster.pid”已存在
2016-01-28 15:52:33 GMT 提示:另一个 postmaster (PID 2100) 是否在数据目录“C:/PostgreSQL/9.1/data”中运行?

更新...我找到了文件 postmaster.pid 并将其删除。现在我正在重新启动计算机并希望它能够启动。

更新...现在可以使用了。我重新启动计算机,postgres 立即启动。小时候很开心,但同时也因为以下论坛而不完全满足:https://superuser.com/questions/553045/fatal-lock-file-postmaster-pid-already-exists。这里声明永远不要删除 postmaster.pid,因为可能会损坏数据。因此,我现在将备份我在 postgres 中的所有数据库。

因此,如果有人能分享更多关于我今天的 ICT 冒险的信息,我将非常满意。这就是为什么我不会说这个问题得到了回答,因为我不知道出了什么问题,也许有一天会再次遇到它。

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    解释很简单。 PostgreSQL 将进程 ID 写入一个名为 postmaster.pid 的文件中——该文件的存在应该表明服务器正在运行。当 PostgreSQL 彻底关闭时,它会删除 postmaster.pid 文件。

    但是,当您的同事重新启动主机时,PostgreSQL 服务器在没有机会删除 postmaster.pid 文件的情况下被杀死。因此,当您尝试启动 PostgreSQL 时,该文件的存在使它看起来抱怨服务器已经在运行。

    This answer 提供更完整的建议。一般来说,你永远不应该无缘无故地删除postmaster.pid,因为它应该有助于防止两台服务器同时在同一个数据文件上运行。但是,如果您确定 postmaster.pid 文件指示的进程已经死了,那么请务必手动删除陈旧的 PID 文件。

    【讨论】:

      【解决方案2】:

      在windows中删除所有正在运行的postgres进程并启动服务

      【讨论】:

        猜你喜欢
        • 2014-05-14
        • 1970-01-01
        • 1970-01-01
        • 2018-07-10
        • 2018-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多