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

PHP通过AWS SDK调用DynamoDB getItem()遇schema不匹配错误

解决DynamoDB getItem调用报错「The provided key element does not match the schema」

你的问题根源很明确:DynamoDB的getItem接口要求必须传入完整的复合主键——也就是你定义的分区键ResidentUUID加上排序键ResidentName,只传其中一个不符合表的主键结构,所以会返回400错误。

两种可行的解决方式:

  • 如果你明确知道目标记录的完整主键值,直接在getItem参数中同时传入两个键:
$client = new Aws\DynamoDb\DynamoDbClient([
    'region' => '你的AWS区域',
    'version' => 'latest'
]);

$result = $client->getItem([
    'TableName' => 'NeedsSystemData',
    'Key' => [
        'ResidentUUID' => ['S' => '你的测试UUID'],
        'ResidentName' => ['S' => '你的测试姓名']
    ]
]);
  • 如果你只知道分区键,想获取该分区下的所有记录,改用query接口(query是针对分区键的高效查询,比scan更适合这种场景):
$result = $client->query([
    'TableName' => 'NeedsSystemData',
    'KeyConditionExpression' => 'ResidentUUID = :uuid',
    'ExpressionAttributeValues' => [
        ':uuid' => ['S' => '你的测试UUID']
    ]
]);

另外提一句:scan能正常返回是因为它是全表扫描,不依赖主键匹配,但scan性能差、读写成本高,非必要场景不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:52:45