PostgreSQL服务器在Lion(Mac OS 10.7)上无法关闭

58

我在Lion系统上使用Homebrew安装了PostgreSQL。它可以正常启动,但无法正常关闭。我尝试了:

$ #started with
$ pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
$ #tried stoping with
$ pg_ctl -D /usr/local/var/postgres stop -m immediate
waiting for server to shut down................................... failed
pg_ctl: server does not shut down

我通过删除启动代理程序解决了这个问题:

launchctl unload -w ~/Library/LaunchAgents/org.postgresql.postgres.plist
rm ~/Library/LaunchAgents/org.postgresql.postgres.plist

7
这是正确的修复方法。在我的OS X Snow Leopard上也有效。你不需要删除plist文件,只需要卸载它即可。你可以通过输入以下命令重新启动它:$ launchctl load -w ~/Library/LaunchAgents/org.postgresql.postgres.plist - stantonk
@Greg:请将您的解决方案作为答案发布并接受,以便该问题不再显示在未回答问题列表中。 - kgrittn
1
如果使用Homebrew安装,它可能看起来像这样:~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist - lfender6445
4个回答

64
launchctl unload -w ~/Library/LaunchAgents/org.postgresql.postgres.plist
rm ~/Library/LaunchAgents/org.postgresql.postgres.plist

33
这个方法对我也有效,只不过我的Launch Agent路径是~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist - Shevaun
谢谢,这对我也有用。我还必须使用Shevaun发布的homebrew路径。 - Paul Oliver
2
这个问题最初是由什么引起的? - Kyle Macey
1
关闭服务器的方式有些难以捉摸。 - Eric Walker
1
launchctl unload + 重启电脑就可以了,不需要删除LaunchAgent。 - Arnaud

12

使用 -m immediate 关闭 PostgreSQL 服务器是一种危险的方式,因为“Immediate”模式会在没有进行干净的关闭操作的情况下中止所有服务器进程。

这将导致重新启动时运行恢复操作。相反,请尝试使用参数 -m fast 关闭 PostgreSQL。 "Fast" 模式不等待客户端断开连接,将终止正在进行的在线备份。所有活动事务都将回滚,并强制断开客户端连接。

pg_ctl stop -D /usr/local/var/postgres -m fast 

如需有关 pg_ctl 的更多信息,请访问http://www.postgresql.org/docs/9.0/static/app-pg-ctl.html


问题不是关于干净的关闭,而是服务器关闭了。无论如何,这个问题已经解决了,并且我已经在问题中更新了解决方案。 - Greg

2

This works for me

 pg_ctl -D /Library/PostgreSQL/9.2/data/ start
 pg_ctl -D /Library/PostgreSQL/9.2/data/ stop

来源 https://sites.google.com/site/amaosblog/database/postgresql/how-to-start-stop-postgresql-9-2-on-mac-os-x-10-8-x

本文介绍如何在Mac OS X 10.8.x上启动和停止PostgreSQL 9.2。以下是具体步骤:
1. 启动终端(Terminal)应用程序 2. 输入以下命令以切换到管理员权限: sudo su - 3. 输入密码,然后按回车键 4. 输入以下命令以启动PostgreSQL: pg_ctl start -D /usr/local/var/postgres 5. 输入以下命令以停止PostgreSQL: pg_ctl stop -D /usr/local/var/postgres
请注意,您需要正确安装PostgreSQL才能执行这些操作。如果您尚未安装,请先安装PostgreSQL。

1
如果您使用Homebrew安装了postgresql,那么Shevauns在Greg的回答中的评论指出,正确的步骤是:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接