You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS RDS PostgreSQL执行update报42703列不存在错误如何解决

问题根因

你遇到的42703报错、语法错误均由引号使用不符合PostgreSQL规则导致,核心错误是将表名、字段名用单引号包裹为字符串常量,而非作为数据库对象引用。

错误点说明

  • 原错误查询中'\"student.class\"'::jsonb将字段名转为了固定字符串"student.class",并非引用student表的class字段,数据库自然识别不到对应列
  • 调整后的查询给表名'\"student\"'、列名'\"class\"'外层额外加了单引号,导致表名、列名变为字符串常量,直接触发语法错误
  • WHERE条件中'\"student.student_id\"' = 1将student_id字段转为字符串常量,永远不可能匹配到数值1,即使语法修复也无法命中需要更新的行

正确写法

如果是将SQL放在JSON结构的query字段中,只需对SQL内部需要的双引号做转义即可,写法如下:

{
  "query": "update \"student\" set \"class\" = jsonb_set(\"class\"::jsonb, '{isPresent}', 'false', true) WHERE \"student_id\" = 1"
}

优化建议

  • 你的表名、字段名均为小写普通命名,没有和SQL关键字重名,不需要加双引号包裹,可直接简化为:
{
  "query": "update student set class = jsonb_set(class::jsonb, '{isPresent}', 'false', true) WHERE student_id = 1"
}
  • 若class字段本身就是jsonb类型,无需额外加::jsonb强转,直接传入字段即可

内容的提问来源于stack exchange,提问作者cool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 16:39:03