解决 PostgreSQL@14 在 brew services start 出现的错误的方法

请解释问题的背景。
问题的背景是什么?

在macOS上使用Homebrew管理PostgreSQL。某一次,當按照平常的方法啟動PostgreSQL服務時,卻收到了錯誤訊息。

由于以下那篇文章及其解决过程和问题原因与之前投稿的内容相似,但由于整合到同一篇文章中太过困难,所以我们将其分为不同的文章进行整理。
解决brew services list中postgresql@14 256错误的方法。

请确认问题

我试图使用以下命令来启动PostgreSQL服务。

brew services start postgresql@14

然而,以下的错误信息被输出了。

Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.
Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/user/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist` exited with 5.

特定问题

根据错误消息,可以推测在以plist文件(/Users/user/Library/LaunchAgents/homebrew.mxcl.postgresql@14.plist)定义的服务启动时发生了某些问题。

这个错误信息通常是在PostgreSQL进程已经在运行或者旧进程尚未关闭的情况下发生的。

解决方案 ‘àn)

我通过以下步骤成功解决了这个问题。

确认正在运行的PostgreSQL进程。

ps aux | grep postgres

通过这样做,您可以确认已经运行的PostgreSQL进程的存在。

停止所有已确认的PostgreSQL进程。

pkill -f postgres

您可以使用此命令强制终止所有正在运行的PostgreSQL进程。

为了确认PostgreSQL是否已经正常停止,再次检查进程。

ps aux | grep postgres

如果停止成功,则此命令不会显示PostgreSQL的进程。

如果存在postmaster.pid文件,则删除该文件。

rm /usr/local/var/postgresql@14/postmaster.pid

停止することができなかった場合、 postmaster.pid ファイルは手動で削除する必要があります。これは、PostgreSQLが正常に起動する際に競合が発生するのを防ぐためです。

如果进程没有正常结束,可能会残留这个文件。如果这个文件存在,PostgreSQL将会判断已经在运行,并且无法启动新的进程,所以需要将其删除。

最后,再次启动PostgreSQL服务。

brew services start postgresql@14

通过执行以上步骤,成功启动了PostgreSQL服务。

广告
将在 10 秒后关闭
bannerAds