【问题标题】:Facing issue in Shell while executing query on remote postgres database在远程 postgres 数据库上执行查询时在 Shell 中面临问题
【发布时间】:2016-09-30 05:00:19
【问题描述】:

我正在我的应用服务器上运行一个 shell 脚本,该脚本将在另一台安装了 Postgres 数据库的机器上运行。它将执行查询并返回几个 ID 并存储到变量中。请在我的 shell 脚本下面找到。

ssh root@<Remote_HOST> 'bash -s'<< EOF 
projectid=`/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c "select projectid from projects where project_Name='$projectName';"`
scenarioid=`/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c  "select scenarioid from scenarios where scenario='$scenario' and projectid='$projectid';"`
EOF
echo $projectid

如果我执行 Shell,我会收到以下错误: /root/test/data.sh:第 62 行:/usr/pgsql-9.4/bin/psql:没有这样的文件或目录 /root/test/data.sh:第 62 行:/usr/pgsql-9.4/bin/psql:没有这样的文件或目录

但是在安装了数据库的机器上,如果我执行相同的查询,我会得到正确的结果。所以我不确定出了什么问题,查询很好并且目录存在。即使在 SSH 到远程主机之后,如果我执行 ls 或 pwd,我也会得到正确的输出。我已经导出了数据库密码,所以没有密码的数据库登录已经可以正常工作了。

有人能告诉我我在这里缺少什么吗?

【问题讨论】:

标签: shell


【解决方案1】:

最后我能够通过在 Shell 中进行更改来解决我的问题

projectid=$(ssh root@<Remote_HOST> << EOF 
/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c "select projectid from projects where project_Name='$projectName';"
EOF)
scenarioid=$(ssh root@<Remote_HOST> << EOF
/usr/pgsql-9.4/bin/psql $DB_NAME -U $DB_USER -h $DB_HOST -t -c "select scenarioid from scenarios where scenario='$scenario' and     projectid='$projectid';"
EOF)
echo "$projectid : $scenarioid"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-29
    • 1970-01-01
    • 1970-01-01
    • 2021-11-22
    • 2014-12-23
    • 1970-01-01
    相关资源
    最近更新 更多