我正在运行最新版本的macOS Sierra,并通过brew安装了PostgreSQL。然后我运行了命令:
pg_ctl -D /Users/tmo/PSQL-data -l logfile start
但收到输出:
waiting for server to start..../bin/sh: logfile: Permission denied
stopped waiting
pg_ctl: could not start server
Examine the log output.
编辑:重新启动我的操作系统并重新运行命令后...我现在收到略微修改的输出...但修改是显着的。
waiting for server to start.... stopped waiting
pg_ctl: could not start server
Examine the log output.
- "日志输出"存储在哪里?
- 如何使此命令工作?
问题可能是我可以看到的两件事之一:
-
数据库路径中的拼写错误:
/Users/tmo/PSQL-data --- >/Users/tmp/PSQL-data
-
如果以上只是转录错误,我猜您的 postgres 用户对您设置日志文件的目录没有写入权限。
-l
开关后面的参数告诉 PG 将日志文件保存在何处。当您不向-l
交换机提供路径,而只提供文件名时,它将使用您用于指定数据库集群的相同目录(带有 -D 标志)。 所以在这种情况下,PG 正在尝试写入/Users/tmp/PSQL-data/logfile,并收到权限错误。
要解决此问题,我会尝试:
-
如果目录/Users/tmp/PSQL-data/不存在:
sudo mkdir /Users/tmp/PSQL-data
-
然后手动创建日志文件:
sudo touch /Users/tmp/PSQL-data/logfile
-
然后让 postgres 用户拥有该文件(我假设用户在这里
postgres
)sudo chown postgres /Users/tmp/PSQL-data/logfile
再试一次,希望您可以启动服务器。
警告:我不是macOS用户,所以我不确定/tmp文件夹的行为方式。 如果定期清除它,则可能需要指定不同的日志文件位置,以便无需在每次需要启动群集时都创建和调整文件。