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

时间:2018-06-22 18:20:32

标签: postgresql macos

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

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

postgres=# 

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

Davids-iMac:datadocs david$ sudo -u postgres psql -f resources/postgresql/initdb.sql
could not identify current directory: Permission denied

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

david$ echo $PGDATA
/Users/david/PostgreSQL/data/pg94

2 个答案:

答案 0 :(得分:3)

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

sudo psql -U postgres -f resources/postgresql/initdb.sql

答案 1 :(得分:1)

问题是sudo -u postgres

您的shell正在按您的方式运行,但是您以postgres用户的身份运行命令。它没有查看文件的权限,甚至没有权限查看当前文件。

我们可以通过仅尝试使用psql作为postgres用户读取文件来从方程中消除sudo -u postgres cat resources/postgresql/initdb.sql。您应该得到同样的错误。

您必须做两件事...

  1. cd到postgres用户可以进入的目录。
  2. 将文件放在postgres用户可以访问的位置。
例如,

/tmp