当前位置: 首页 > 知识库问答 >
问题:

DynamoDB-Key元素与架构不匹配

慎志国
2023-03-14

我正在尝试更新Dynamodb表用户中的一项。我尝试了许多不同的方法,但总是收到相同的错误消息

提供的键元素与架构不匹配

项目的创建与查询一样有效,但更新不起作用。当我在DynamoDB上检查时,用户创建得很好:

{
  "email": "test@email.com",
  "password": "123",
  "registration": 1460136902241,
  "verified": false
}

下面是表格信息:

  • 表名:用户
  • 主分区键:电子邮件(字符串)
  • 主排序键:注册(编号)

下面是代码(从lambda调用):

exports.handler = function(event, context)
{
    var AWS = require("aws-sdk");


    var docClient = new AWS.DynamoDB.DocumentClient();

    var params = {
        TableName: "Users",
        Item:{
            email: "test@email.com",
            password: "123",
            verified: false,
            registration: (new Date()).getTime(),
        }
    };

    // Create the user.

    docClient.put(params, function(err, data)
    {
        if (err)
        {
            context.fail("Put failed...");
            return;
        }

        var params = {
            TableName: "Users",
            Key: { email : "test@email.com" },
            AttributeUpdates: {
                verified: {
                    Action: "PUT",
                    Value: true
                }
            }
        };

        // Update the user.
        docClient.update(params, function(err, data)
        {
            if (err)
            {
                console.log(JSON.stringify(err));
                context.fail(JSON.stringify(err));
                return;
            }
            context.succeed("User successfully updated.");
        });


    });

};

你知道我的代码中可能有什么错误吗?

共有3个答案

符畅
2023-03-14

我在面对这个问题时的清单:

  1. 检查密钥的名称和类型是否与数据库中的密钥对应

如果您知道,请在评论中添加更多内容。

丁阳炎
2023-03-14

对于其他面临相同挑战的人来说,上述答案并没有解决这个问题,因此最好仔细检查正在更新的值的数据类型,在我的情况下,主键需要一个数字,而我试图用字符串更新。愚蠢的我

长孙高远
2023-03-14

您只提供了主键的一半。主键是分区键和范围键的组合。您需要在更新参数中的Key属性中包含范围键。

 类似资料:
  • 我正在尝试使用boto3从DynamoDB查询项目。 该表如下所示: DynamoDB表 我运行的代码是: 我错过了什么?

  • 我在DynamoDB中创建了一个表“user\u info”,其中有一个主哈希键“user\u id”(String),没有范围键。然后,我创建了2个AWS lambda函数来插入和查询项目。我可以将项目插入表中,但查询表时,它会返回: ValidationException:提供的键元素与架构不匹配。 我的查询功能: 我一直得到这个例外: 自从 1) 我只有一个哈希主键。 2)user_id定义

  • 我在Boto3/DynamoDB BatchGetItem操作中遇到困难。我将非常感谢任何帮助或指导!我对python/aws非常陌生,如果这是一个新手问题,那么很抱歉在高级版。 当我执行该操作时,会出现以下错误: 这是我的代码: 这是表中项目的屏幕盖。 这是表详细信息的屏幕盖,显示分区键为'item_ID',是'string' 以下是完整的错误消息:

  • 当我试图从表中获取项目时,它会打印此错误 botocore.exceptions.ClientError:调用GetItem操作时发生错误(ValidationException):提供的键元素与架构不匹配 这是我的密码 有什么想法吗?谢谢

  • 我正在尝试使用AWS Lambda函数将csv数据从S3写入DynamoDB。我当前收到以下错误“BatchWriteItem操作:提供的键元素与架构不匹配”。 这个问题有快速解决办法吗? 错误如下所示: 调用BatchWriteItem操作时发生错误(ValidationExc0019):提供的键元素与模式不匹配:ClientError Traceback(最近的调用最后一次): 文件“/var

  • 以下是更详细的错误消息: 我将代码中的问题隔离在下面的某个地方,尽管我不知道抛出这个异常的具体原因: gradle.build-项目