我正在尝试创建一个创建DB的简单脚本,以便以后我可以这样调用它:
psql -f createDB.sql
我希望脚本调用其他脚本(用于创建表、添加约束、函数等的单独脚本),如下所示:
\i script1.sql
\i script2.sql
只要createDB.sql位于同一个目录中,它就可以正常工作。
但是如果我将script2移动到createDB下的目录下,并修改createDB,它看起来像这样:
\i script1.sql
\i somedir\script2.sql
我收到一个错误:
psql:createDB.sql:2: somedir: Permission denied
我正在使用windows的Postgres Plus 8.3 ,默认postgres用户。
发布于 2018-08-16 08:01:02
Postgres是在Linux/Unix上启动的,我怀疑用它来逆转斜杠。
\i somedir/script2.sql
If you need to fully qualify something
\i c:/somedir/script2.sql
If that doesn't fix it, my next guess would be you need to escape the backslash.
\i somedir\\script2.sql
发布于 2018-08-16 09:24:35
试过使用Unix样式的斜杠(是/,而不是\)?
\通常是一个转义或命令字符,可能是混乱的根源。我从来没有这个问题,但我也没有Windows,所以我不能测试它。
此外,权限可能是基于运行psql的用户,或者检查Postmaster服务的用户是否都已读取到该目录文件。
https://stackoverflow.com/questions/-100000579
复制相似问题