PostgreSQL连接失败

有时,计算机有自己的生命。您关闭了笔记本电脑,在下次启动时,您无法连接到 PostgreSQL 12 数据库。

打开安装的Postgres.app,我注意到它显示stale postmaster.pid file错误。

[Altu003d"stale postmaster-pid file"](https://res.cloudinary.com/practicaldev/image/fetch/s--HVnX-y-q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880 /https://dev-to-uploads.s3.amazonaws.com/i/3j2o4vv64y02bcwa748x.png)

Postmaster.pid

postmaster.pid 文件到底是什么?原来 postmaster.pid 是一个锁定文件,用于防止同一 PostgreSQL 服务器的两个实例在同一数据目录上运行。

当服务器运行时,它的 PID 存储在数据目录中的文件 postmaster.pid 中。这用于防止多个服务器实例在同一个数据目录中运行,也可用于关闭服务器。

这是我第一次遇到这样的错误。我单击 Start 按钮强制重新启动,然后我返回一个带有以下消息的对话框: 数据目录包含一个 postmaster.pid 文件,这通常意味着服务器已经在运行。当服务器崩溃或被杀死时,您必须先删除此文件,然后才能重新启动服务器。确保数据库进程绝对不再运行,否则您的数据目录将损坏。

[altu003d"数据目录包含旧的 postmaster.pid 文件"](https://res.cloudinary.com/practicaldev/image/fetch/s--3bmP_ULY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto %2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y8z40p1tz5bqq3xgannm.png)

单击 OK 按钮关闭对话窗口。

解决问题

1.打开Postgres.app

  1. 点击服务器设置...

  2. 单击Data Directory 旁边的Show 按钮。这应该会打开 PostgreSQl 安装的数据目录。 altu003d"postgres.app 服务器设置"

4.找到_postmaster.pid_文件altu003d"postgresql 数据目录文件夹"

  1. 删除_postmaster.pid_ 文件。右键单击文件并选择 Move to Bin altu003d"postgresql 删除 postmaster.pid 文件"

  2. 删除文件后,打开或使 Postgres GUI 应用程序窗口具有焦点会将错误消息从stale postmaster.pid file更改为Not running。单击 Postgres GUI 应用程序上的 Start 按钮以启动 PostgreSQL 服务器。 altu003d"postgresql 服务器未运行错误"

前进之路

为什么不让 PostgreSQL 自动删除陈旧的 postmaster.pid 文件?这将使用户在不知道其内部工作原理的情况下管理 PostgreSQL 数据库。存在自动删除陈旧的 postmaster.pid的优缺点,这两者之间的平衡并不容易。因此,在撰写本文时,自动删除文件仍然是一个悬而未决的问题,并且是用户的责任。

延伸阅读

  • 什么是数据目录和 postmaster.pid 问题 #395

  • 故障排除和支持

  • 不要手动修改 PostgreSQL 数据目录!

  • 启动数据库服务器

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐