【问题标题】:Need to know if transaction is aborting in script需要知道事务是否在脚本中中止
【发布时间】:2021-10-14 02:54:12
【问题描述】:

我有一个 shell 脚本,它为我的数据库运行一个 sql 文件,问题是当事务因任何原因(并发问题等)中止时,我想知道它已经失败,以便我可以做其他事情,我只是不完全确定如何从命令中读取事务已中止。

'psql 正常结束返回 0,自身发生致命错误返回 1',我想检查返回的非零代码。

例如:

echo 'Deploying SQL'
psql --quiet --single-transaction --file=myfile.sql

脚本将在 cron 上运行,因此即使在事务中止时它确实提供错误消息,也不会每次都在那里阅读它,所以当这种情况发生时我需要能够做点什么。

例如:

local result = psql --quiet --single-transaction --file=myfile.sql

if [[ result == 1 ]]; then
   # do something else
else
   echo 'successful'
fi

我对 shell 脚本比较陌生,因此非常感谢任何帮助。

【问题讨论】:

  • 你怎么知道事务被中止了?退出代码?输出到标准错误?输出到日志文件?
  • 原来问题里应该有,现在加进去。

标签: shell psql


【解决方案1】:

您可以在 if-else 语句中运行该命令。

if psql --quiet --single-transaction --file=myfile.sql; then
    echo 'OK'
else
    echo 'KO'
fi

或者像这样通过$?查看之前的返回状态:

psql --quiet --single-transaction --file=myfile.sql
local result="$?"
if [[ "$result" == 0 ]]; then
    echo 'OK'
else
    echo 'KO'
fi

【讨论】:

    猜你喜欢
    • 2022-07-05
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多