情况相当模糊,尝试了几个小时的不同事情却没有运气。
我有一个 bash 脚本,可以在本地恢复生产数据库备份。该脚本的一部分运行一些 SQL 来设置数据库中的内容。
其中一项是slack_token
在slack_details
表格中设置正确的值。以下是我运行 bash 脚本的方法:
$ ./restore-prod-database.sh -t "xoxb-1234567-1234....."
该脚本有一行触发运行 .sql 文件,如下所示:
psql -h $DATABASE_HOST -d $DATABASE_NAME -a -v slack_token=$SLACK_TOKEN -f restore-populate-slack-details.sql
最后,SQL 执行如下操作:
UPDATE slack_details
SET installation = jsonb_set(installation, '{bot,token}', ('"' || :slack_token ||'"')::jsonb)
WHERE id = 1;
无论我尝试什么,无论是用引号连接 :slack_token、用引号传递它、使用单引号和 " 我都会收到以下错误:
更新 slack_details SET 安装 = jsonb_set(安装, '{bot,token}', ('"' || :slack_token ||'"')::jsonb) WHERE id = 1; psql:restore-populate-slack-details.sql:61: 错误: 列“xoxb”不存在第 2 行: ... = jsonb_set(installation, '{bot,token}', ('"' || xoxb- 12345...
快速注意,安装是一个 jsonb 列,以下代码工作正常,当我使用 -v 变量时它不起作用:
UPDATE slack_details
SET installation = jsonb_set(installation, '{bot,token}', ('"' || '123456' ||'"')::jsonb)
WHERE id = 1; --- works fine