psql:警告:多余的命令行参数“ from”被忽略

时间:2019-06-21 15:43:08

标签: bash postgresql shell

我正在尝试执行非交互式的postgres命令。

PGPASSWORD=$PGPASS psql -h 127.0.0.1 -U postgresql -d $PGDB --command "select count(*) from services"

谁一直给我这个答复。

  

psql:警告:额外的命令行参数“ from”被忽略

     

psql:警告:额外的命令行参数“ services;”已忽略

     

psql:警告:多余的命令行参数“ mydbname”被忽略

     

psql:致命:数据库“ count(*)”不存在

我已经读到这可能是因为终端/ bash试图将每个参数--command / -c分解为自己的参数。

我也尝试过:

PSQLARGS=(-h 127.0.0.1 -U postgresql -c )
PSQLARGS+=("select count(*) from services;")
PSQLARGS+=(${PGDB})
PGPASSWORD=$PGPASS psql "${PSQLARGS[@]}"

以某种方式迫使终端知道它是一个参数,但这也不起作用。

2 个答案:

答案 0 :(得分:0)

在我看来$ PGDB为空,因此psql认为--command是数据库的名称。

答案 1 :(得分:0)

这是一个非常便宜且常见的错误。 将所有内容都用引号引起来。

尝试一下:

PGPASSWORD="$PGPASS" psql -h '127.0.0.1' -U 'postgresql' -d "$PGDB" --command "select count(*) from services"

让我们知道它是否对您有用。