升级到版本9.3.2自制软件后,我的postgres安装发生了一些奇怪的事情。
有时而不是每次,如果我输入psql
,我会收到以下错误消息:
无法连接到服务器:没有这样的文件或目录 服务器是在本地运行还是接受 Unix域套接字上的连接" /tmp/.s.PGSQL.5432"?
似乎postgres正在运行,因为如果我尝试使用此命令停止postgres:
pg_ctl -D /usr/local/var/postgres stop -s -m fast
我收到了这个回复:
pg_ctl:服务器没有关闭
如果我查看server.log
,我可以看到以下条目:
致命:锁定文件" postmaster.pid"已经存在提示:是另一个 postmaster(PID 208)在数据目录中运行 "在/ usr /本地的/ var / postgres的"
经过一些疯狂的谷歌搜索后,我可以通过输入以下命令来解决这个问题:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
我首先要了解发生了什么,其次我想一劳永逸地解决这个问题。
任何人都可以解释可能发生的事情和治疗方法吗?
答案 0 :(得分:0)
首先,尝试在OSX(以及PG 9.3)上提取PostgreSQL上的日志,这很可能就在这里:
/Library/PostgreSQL/9.3/data/pg_log
检查此日志,看看是否有任何内容可以解释更多正在发生的事情。将它贴在这里或过去的某个地方。这可以帮助社区调试问题。
接下来,'pg_ctl'表示服务器未关闭的原因是因为您有一个陈旧的套接字文件和/或过时的.plist文件,该文件在上次关闭时未被删除。这可能表明PostgreSQl守护程序被“崩溃”或被强制关闭并且没有干净的完成。
您使用的命令删除了陈旧文件,从而为创建新的套接字文件腾出空间。
同样重要的是要知道这是PostgreSQL的次要升级还是重大升级。主要升级始终需要迁移数据目录。使用新引擎运行旧的PostgreSQL数据目录可能会产生意外结果。