数据目录包含旧的 postmaster.pid 文件
PostgreSQL连接失败
有时,计算机有自己的生命。您关闭了笔记本电脑,在下次启动时,您无法连接到 PostgreSQL 12 数据库。
打开安装的Postgres.app,我注意到它显示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 文件,这通常意味着服务器已经在运行。当服务器崩溃或被杀死时,您必须先删除此文件,然后才能重新启动服务器。确保数据库进程绝对不再运行,否则您的数据目录将损坏。
[
](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
-
点击服务器设置...
-
单击Data Directory 旁边的Show 按钮。这应该会打开 PostgreSQl 安装的数据目录。

4.找到_postmaster.pid_文件
-
删除_postmaster.pid_ 文件。右键单击文件并选择 Move to Bin

-
删除文件后,打开或使 Postgres GUI 应用程序窗口具有焦点会将错误消息从
stale postmaster.pid file更改为Not running。单击 Postgres GUI 应用程序上的 Start 按钮以启动 PostgreSQL 服务器。
前进之路
为什么不让 PostgreSQL 自动删除陈旧的 postmaster.pid 文件?这将使用户在不知道其内部工作原理的情况下管理 PostgreSQL 数据库。存在自动删除陈旧的 postmaster.pid的优缺点,这两者之间的平衡并不容易。因此,在撰写本文时,自动删除文件仍然是一个悬而未决的问题,并且是用户的责任。
延伸阅读
-
什么是数据目录和 postmaster.pid 问题 #395
-
故障排除和支持
-
不要手动修改 PostgreSQL 数据目录!
-
启动数据库服务器
更多推荐
所有评论(0)