记录一个今天遇到的很坑的问题:电脑重启后,postgres 没有重启,于是我去手动启动,然而一直启动失败。
网上有很多帖子说 postgres 启动命令为:
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
注意这只是默认安装路径,你要找到你自己的 postgres 安装路径。
postgres 启动是要指明文件路径的,具体命令见以下(来自 postgres --help
):
pg_ctl start [-w] [-t SECS] [-D DATADIR] [-s] [-l FILENAME] [-o "OPTIONS"]
我的 postgres 安装路径为:
~/Library/Application Support/Postgres/var-9.5
我一开始跑的命令如下:
pg_ctl -D ~/Library/Application Support/Postgres/var-9.5 -l ~/Library/Application Support/Postgres/var-9.5/postgres-server.log start
然而启动失败,报错如下:
pg_ctl: unrecognized operation mode "Support/Postgres/var-9.5"
这个报错一开始深深误导了我,我去查 unrecognized operation mode 查了好久,我怀疑是不是我的启动方式有问题。
后来我发现还有一种方式可以启动 postgres,不过是前台启动,于是我又死马当活马医地试了一下:
postgres -D ~/Library/Application Support/Postgres/var-9.5
启动也失败了,报错如下:
postgres: invalid argument: "Support/Postgres/var-9.5"
但是!这个报错比之前的良心太多了,因为通过 invalid argument 这个关键字我瞬间顿悟到了错误的根源,在于 "Application Support"
这个文件名包含了一个空格,导致启动命令以为传入了两个参数。
知道错误的原因后,通过以下启动命令成功启动 postgres:
pg_ctl -D "/Users/spiderevgn/Library/Application Support/Postgres/var-9.5" -l "/Users/spiderevgn/Library/Application Support/Postgres/var-9.5/postgres-server.log" start
终于启动成功,打开 Postico, 点击 connect, 连接成功!