如何在MacOS上重新启动PostgreSQL服务器?

18
我尝试了以下方法但失败了。
bash-3.2$ pg_ctl restart
pg_ctl: no database directory specified and environment variable PGDATA unset

我正在使用 Macbook Pro,但不记得我的数据存储在哪个目录中,因此无法设置PGDATA,有没有一种方法可以重新启动Postgres而不会丢失数据?

谢谢

3个回答

23

由于您想要重新启动Postgres,我假设服务器已经在运行。

使用超级用户账户,您可以通过SQL查询数据目录的位置:

select name, setting
from pg_settings
where name = 'data_directory'

有了这些信息,你可以使用-D开关将数据目录提供给pg_ctl命令(详见手册)。


18

如果您使用brew,则可以通过执行brew info postgresql找到重新启动(启动|停止)指令。一些问题是由于我看到的plist在某些情况下无法在操作系统启动时加载而引起的。我总是忘记该做什么,这个方法很有帮助。

在我的Postgres 9.2 brew配方中,它有:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
这正是我一直在寻找的!似乎关于重新启动postgres的brew相关文档非常少或几乎没有。 - jgillman

16

一行命令(使用默认的postgresSql 9.6安装)

sudo su postgres -c "/Library/PostgreSQL/9.6/bin/pg_ctl restart -D /Library/PostgreSQL/9.6/data"

完整版

获取pgdata文件夹(在我的情况下为/Library/PostgreSQL/9.6/data)(感谢@a_horse_with_no_name)

select name, setting from pg_settings where name = 'data_directory';

对我来说它返回'/Library/PostgreSQL/9.6/data'

然后

sudo su - postgres
./bin/pg_ctl restart -D /Library/PostgreSQL/9.6/data

注意:Postgres的用户主目录应该是“/Library/PostgreSQL/9.6”


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