这是我的问题:



即使文件在 table 面上,我也有此问题。
当我复制create.sql的文本并将其粘贴到那里时,它可以工作。

使用UBUNTU 12.10,PostgreSQL 9.1

感谢您的帮助。

最佳答案

问题是您已经以用户psql的身份启动了postgres,但尚未授予postgres用户读取SQL文件的权限。您需要授予它权限。最简单的方法是授予世界读取权限:

chmod a+r create.sql

您可以通过更改umask来更改分配给文件的默认权限;搜索更多信息。某些程序反而会烦人地忽略umask并设置限制性文件权限,因此您始终需要知道如何授予权限。参见man chmodman chown

顺便说一句,您正在使用一种非常复杂的方法以psql用户身份启动postgres。这样就可以了:
sudo -u postgres psql template1

请注意,/create.sql在文件系统的根目录(create.sql)中指定了一个名为/的文件。我怀疑这就是您的意图。

如果它位于您的主目录中,则可能需要将其指定为相对路径(不带前导/),例如:
template1=# \i create.sql

或如果它在 table 面上并且您已经在主目录中启动了psql:
template1=# \i Desktop/create.sql

关于postgresql - 使用\i命令从文件读取时,PostgreSQL权限被拒绝,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13682739/

10-16 22:59