C amazon dynamoDb验证异常

C amazon dynamoDb验证异常,c,amazon-dynamodb,libcurl,aws-sdk,C,Amazon Dynamodb,Libcurl,Aws Sdk,我正在使用C中的aws dynamo库执行以下dynamoDB查询参数 { "TableName": "table4", "KeyConditionExpression": "#yr = :yyyy and ts between :letter1 and :letter2", "ExpressionAttributeNames": { "#yr": "userid" }, "ExpressionAttributeValues": { ":yyyy": "abc", ":letter1": 1,

我正在使用C中的aws dynamo库执行以下dynamoDB查询参数

{ "TableName": "table4", "KeyConditionExpression": "#yr = :yyyy and ts between :letter1 and :letter2", "ExpressionAttributeNames": { "#yr": "userid" }, "ExpressionAttributeValues": { ":yyyy": "abc", ":letter1": 1, ":letter2": 2 } }
但我犯了个错误

"__type":"com.amazon.coral.validate#ValidationException","message":"1 validation error detected: Value null at 'hashKeyValue' failed to satisfy constraint: Member must not be null"
这是我的桌子结构

 table4
{
    "Table": {
        "TableSizeBytes": 66,
        "KeySchema": [
            {
                "AttributeName": "userid",
                "KeyType": "HASH"
            },
            {
                "AttributeName": "ts",
                "KeyType": "RANGE"
            }
        ],
        "CreationDateTime": 1464617195.039,
        "ItemCount": 3,
        "AttributeDefinitions": [
            {
                "AttributeName": "ts",
                "AttributeType": "N"
            },
            {
                "AttributeName": "userid",
                "AttributeType": "S"
            }
        ],
        "ProvisionedThroughput": {
            "ReadCapacityUnits": 1,
            "WriteCapacityUnits": 1,
            "LastDecreaseDateTime": 1464683346.007,
            "NumberOfDecreasesToday": 1
        },
        "TableStatus": "ACTIVE",
        "TableName": "table4",
        "TableArn": "arn:aws:dynamodb:us-east-1:456456456:table/table4"
    }
}

分区键在keyconditionexpression中是必须的。请包含分区密钥并重试。当您查询dynamodb时,分区键是必须的。扫描dynamodb时,分区键是可选的。这是dynamodb中查询与扫描的主要区别。

这里是工作查询和表结构

{ TableName: 'table4',
KeyConditionExpression: '#userid = :userid AND #ts between :ts1 AND :ts2',
ExpressionAttributeNames: { '#userid': 'userid', '#ts': 'ts' },
ExpressionAttributeValues: { ':userid': 'user1', ':ts1': 1, ':ts2': 2 } }
查询输出:-

{"userid":{"S":"user1"},"ts":{"N":"1"}}
表结构:-

    {"Table":{"AttributeDefinitions":  
      [{"AttributeName":"userid","AttributeType":"S"},
     {"AttributeName":"ts","AttributeType":"N"}],
"TableName":"table4","KeySchema":
[{"AttributeName":"userid","KeyType":"HASH"},{"AttributeName":"ts","KeyType":"RANGE"}],
"TableStatus":"ACTIVE",
"CreationDateTime":"2016-05-31T12:46:08.351Z",
"ProvisionedThroughput":{"LastIncreaseDateTime":"1970-01-01T00:00:00.000Z","LastDecreaseDateTime":"1970-01-01T00:00:00.000Z","NumberOfDecreasesToday":0,
"ReadCapacityUnits":10,"WriteCapacityUnits":10},
"TableSizeBytes":15,"ItemCount":1,"TableArn":
"arn:aws:dynamodb:ddblocal:000000000000:table/table4"}}

表的分区键和排序键是什么?您是否在KeyConditionExpression中包含了分区键字段?partition key=userid,sortkey=tsi allready在我的KeyConditionExpression中添加了分区键(userid)。您能否运行“描述表”命令并将表结构粘贴到此处?我在问题中添加了表结构这是否解决了您的问题?如果是,你能接受这个答案吗?