解决 PostgreSQL@14 在 brew services start 出现的错误的方法
请解释问题的背景。
问题的背景是什么?
在macOS上使用Homebrew管理PostgreSQL。某一次,當按照平常的方法啟動PostgreSQL服務時,卻收到了錯誤訊息。
由于以下那篇文章及其解决过程和问题原因与之前投稿的内容相似,但由于整合到同一篇文章中太过困难,所以我们将其分为不同的文章进行整理。
解决brew services list中postgresql@14 256错误的方法。
解决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服务。