Cron作业无法与PostgreSQL数据库建立连接

问题描述 投票:-1回答:2

我已尝试使用以下Shell脚本运行cron作业。

#!/bin/bash

PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

gsutil cp gs://api-bucket/order_status.csv order_status.csv

psql -d  apidb -U apidb  << EOF

DELETE FROM apidbgermany.order_status;
\copy apidb.order_status from '/u01/app/postgres/data/silver01/order_status.csv'  delimiter ',' CSV ;
EOF

我的cronjob看起来像这样。

* * * * * /u01/app/postgres/data/silver01/order_status.sh &>/tmp/mycommand.log

getting following error

但是,如果我在命令行中手动执行外壳文件,则效果很好。

shell unix cron psql
2个回答
1
投票

要访问远程服务器,您应该以这种方式执行命令psql

psql -h postgress_host -d  apidb -U apidb  << EOF
....

否则psql尝试连接本地服务器。当创建cron脚本时,请始终使用可执行文件的填充路径

/usr/bin/psql ....

(例如)

并添加为脚本行的第二行,如:

source ~/.bash_profile

source ~/.bashrc

取决于您的环境设置在哪里


0
投票

[另外,请直接使用pg_cron扩展名,它将为您解决此问题。您可以从postgres内部设置分支。pg_cron extension

© www.soinside.com 2019 - 2024. All rights reserved.