当来自 shell 的 运行 参数化查询时,“:”处或附近的语法错误
syntax error at or near ":" when running parametrized query from shell
我正在尝试 运行 来自 shell 的参数化查询。
但是当我运行:
p='some stuff'
psql -d "dbname" -v v1="$p" -c "SELECT * FROM table WHERE name=:'v1'"
我收到以下错误:
ERROR: syntax error at or near ":"
同时:
psql -d "dbname" -v v1="$p" -c "\echo :'v1'"
工作正常。 (returns 符合预期:'some stuff'
)
您不能在 -c
命令中使用 -v
中定义的变量(见下文)。尝试将命令传递到标准输入:
psql -d "dbname" -v v1="$p" <<< "SELECT * FROM table WHERE name=:'v1'"
来自document:
-c command
--command command
...
command must be either a command string that is completely parsable by
the server (i.e., it contains no psql-specific features), or a single
backslash command.
...
-v
确实设置了 psql 的内部变量,这是 psql 特定的特性。这就是您出现语法错误的原因。
我正在尝试 运行 来自 shell 的参数化查询。
但是当我运行:
p='some stuff'
psql -d "dbname" -v v1="$p" -c "SELECT * FROM table WHERE name=:'v1'"
我收到以下错误:
ERROR: syntax error at or near ":"
同时:
psql -d "dbname" -v v1="$p" -c "\echo :'v1'"
工作正常。 (returns 符合预期:'some stuff'
)
您不能在 -c
命令中使用 -v
中定义的变量(见下文)。尝试将命令传递到标准输入:
psql -d "dbname" -v v1="$p" <<< "SELECT * FROM table WHERE name=:'v1'"
来自document:
-c command
--command command
...
command must be either a command string that is completely parsable by the server (i.e., it contains no psql-specific features), or a single backslash command.
...
-v
确实设置了 psql 的内部变量,这是 psql 特定的特性。这就是您出现语法错误的原因。