gpt4 book ai didi

java - 无法从 DynamoDB 表中删除项目 (java)

转载 作者:行者123 更新时间:2023-11-30 03:05:43 26 4
gpt4 key购买 nike

我一直在尝试通过 java 代码从 DynamoDB 的表中删除项目,但我所做的每一次尝试都会导致相同的错误:

com.amazonaws.AmazonServiceException: The provided key element does not match the schema (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException;

我当前的尝试非常简单,如下所示:

final DynamoDB dynamoDB = new DynamoDB(new  AmazonDynamoDBClient(credentials));  

Table table =dynamoDB.getTable(tableName);

DeleteItemSpec itemSpec = new DeleteItemSpec().withPrimaryKey("cognitoId", cognitoId);
table.deleteItem(itemSpec);

tablename 只是表名称,凭据已验证正确,cognitoId 是项目的实际 ID正在尝试删除。有问题的表将 cognitoId 作为主键,我不明白为什么删除与架构不匹配。该表还有一个排序键或范围键(我不确定它是什么,因为文档相当模糊)。我一直在这里引用文档: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key

最佳答案

创建表时是否有排序键?如果是这样,那么您还必须指定排序键,因为表上有一个复合键。拥有排序键意味着您可以拥有具有相同主键的多条记录,但排序键必须是唯一的

http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithTables.html#WorkingWithTables.primary.key

排序键在 AWS Dynamo DB 文档和控制台中也可能称为范围或范围键。

所以你的删除项目就像

DeleteItemSpec itemSpec = new DeleteItemSpec().withPrimaryKey("cognitoId", "my_id", "sortKeyField", "sort_key_id");
DeleteItemOutcome outcome = table.deleteItem(itemSpec);

关于java - 无法从 DynamoDB 表中删除项目 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34819663/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com