如何运行 postgres 命令:无法识别当前目录

Dav*_*542 8 postgresql macos

我可以psql通过执行以下操作来运行:

Davids-d david$ psql --u postgres
Password for user postgres: 
psql (9.4.18)
Type "help" for help.

postgres=# 
Run Code Online (Sandbox Code Playgroud)

但是,当我运行以下命令时,出现错误:

Davids-iMac:datadocs david$ sudo -u postgres psql -f resources/postgresql/initdb.sql
could not identify current directory: Permission denied
Run Code Online (Sandbox Code Playgroud)

这是什么意思?我该如何解决这个问题?请注意,我确实设置了以下变量:

david$ echo $PGDATA
/Users/david/PostgreSQL/data/pg94
Run Code Online (Sandbox Code Playgroud)

Sch*_*ern 8

问题是sudo -u postgres.

您的 shell 正在以您的身份运行,但您以 postgres 用户的身份运行命令。它没有权限查看该文件,甚至没有权限位于当前目录中。

我们可以psql通过尝试以 postgres 用户身份使用sudo -u postgres cat resources/postgresql/initdb.sql. 你应该得到同样的错误。

有两件事你必须做...

  1. cd到 postgres 用户可以所在的目录。
  2. 将文件放在 postgres 用户可以访问的位置。

/tmp, 例如。


NiV*_*VeR 6

您的命令似乎错误,请尝试以下操作:

sudo psql -U postgres -f resources/postgresql/initdb.sql
Run Code Online (Sandbox Code Playgroud)