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

DynamoDB执行PutItem未创建新条目也未更新主键问题求助

你遇到的问题根源是 put_item 方法的 ConditionExpression 逻辑配置错误,具体原因如下:

  • 第一,DynamoDB 中 PutItem 的条件表达式仅作用于你本次要写入的 Item 主键对应的已存在记录:你本次提交写入的 Item 主键 session_id 是真实会话ID,和你在条件表达式里传的:session_id=999999999完全不匹配,条件永远无法满足,PutItem 操作直接被拒绝,所以既不会生成新条目,也不会修改旧条目。
  • 第二,你提到的无报错属于异常遗漏:当条件表达式校验失败时,DynamoDB 会抛出 ConditionalCheckFailedException 异常,你没有捕获该异常的情况下如果上层逻辑吞了异常,就会出现「无报错但操作没生效」的情况。
  • 第三,你的功能逻辑本身也存在对PutItem的误用:PutItem 只会对提交的主键对应的条目做覆盖/新增操作,完全无法修改已有条目的主键值,你想把999999999的主键改成真实session_id的需求,本身就不可能通过单次PutItem实现。

解决方案

根据你的需求可选对应方案:

  1. 仅需新增真实session_id的新条目,保留999999999的占位记录:直接去掉put_item调用中的ConditionExpression和ExpressionAttributeValues参数即可,只要传入的session_id是新值,DynamoDB会自动生成新条目。
  2. 需要把999999999的占位记录替换为真实session_id的记录:先调用delete_item删除主键为999999999的条目,再调用不带条件的put_item写入真实session_id的条目即可。
  3. 仅需要修改999999999对应条目的非主键字段:改用update_item接口,指定主键为999999999,仅更新count_1、count_2等非主键字段即可,不能修改主键session_id本身。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:27:01