这是我的问题:
即使文件在 table 面上,我也有此问题。
当我复制create.sql的文本并将其粘贴到那里时,它可以工作。
使用UBUNTU 12.10,PostgreSQL 9.1
感谢您的帮助。
最佳答案
问题是您已经以用户psql
的身份启动了postgres
,但尚未授予postgres
用户读取SQL文件的权限。您需要授予它权限。最简单的方法是授予世界读取权限:
chmod a+r create.sql
您可以通过更改
umask
来更改分配给文件的默认权限;搜索更多信息。某些程序反而会烦人地忽略umask
并设置限制性文件权限,因此您始终需要知道如何授予权限。参见man chmod
和man 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/