dash ind CLI 命令导致的 Postgres 语法错误

Postgres Syntax error caused by dash ind CLI command

提问人:beli3ver 提问时间:11/17/2023 最后编辑:Mureinikbeli3ver 更新时间:11/18/2023 访问量:31

问:

我有一个带有此命令的脚本

/usr/bin/psql postgres -h localhost -U postgres -c "GRANT CONNECT ON DATABASE "famdb-develop" TO fullwood;"

当我运行它时,我收到此错误:

ERROR:  syntax error at or near "-"
LINE 1: GRANT CONNECT ON DATABASE famdb-develop TO fullwood;

如何转义此命令中的破折号?

PostgreSQL bash 语法错误

评论

3赞 amdixon 11/17/2023
我认为您需要转义 famdb-develop 周围的引号,例如“famdb-develop\”

答:

2赞 Mureinik 11/17/2023 #1

看起来引号没有传递给 PostgreSQL。您需要通过在它们前面加上反斜杠 () 来转义它们:\

/usr/bin/psql postgres -h localhost -U postgres -c "GRANT CONNECT ON DATABASE \"famdb-develop\" TO fullwood;"
# Here -----------------------------------------------------------------------^--------------^
1赞 Diego Torres Milano 11/18/2023 #2

由于 sql 中没有变量,因此可以使用单引号

/usr/bin/psql postgres -h localhost -U postgres -c 'GRANT CONNECT ON DATABASE "famdb-develop" TO fullwood;'