【发布时间】:2021-08-20 05:11:25
【问题描述】:
我正在交互式地运行一个脚本来测试它。元命令 \c 不能很好地与标准 sql 命令配合使用:它似乎想自己运行。这是在脚本中运行时发生的情况
\set username steve
\c pubkey :username
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO :username;
GRANT ALL PRIVILEGES ON ALL sequences IN SCHEMA public TO :username;
结果:
invalid integer value "ALL" for connection option "port"
Previous connection kept
但是如果“\c”命令是自己运行的,那么后续的grant 是成功的。有没有办法在 psql 脚本中嵌入“\c”连接命令?
【问题讨论】:
-
我猜变量
username错误地包含了一些空格。端口将是\c的第四个参数。 -
@LaurenzAlbe 它没有空格:还要考虑“\c”命令在自己执行时有效。
-
既然你没有显示设置
username的代码,我就不能再说了。但是错误信息很清楚。 -
似乎 psql 将 :username 解释为用户,“GRANT”解释为主机,“ALL”解释为端口。所以问题似乎是命令的分离。文件中的行尾字符是什么?
-
@JuliusTuskenis 这是在 macOS 上,行尾是
\cr(不是\cr\lf)或十六进制 '0x0a'
标签: postgresql psql