2016-05-30 167 views
1

我执行以下使用AWS-发电机库C.亚马逊dynamoDb ValidationException

{ "TableName": "table4", "KeyConditionExpression": "#yr = :yyyy and ts between :letter1 and :letter2", "ExpressionAttributeNames": { "#yr": "userid" }, "ExpressionAttributeValues": { ":yyyy": "abc", ":letter1": 1, ":letter2": 2 } } 

dynamoDB查询参数,但我得到的错误

"__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" 
    } 
} 
+1

什么是分区键和排序表的关键?你是否在KeyConditionExpression中包含了分区键字段? – notionquest

+0

partition key = userid,sortkey = ts –

回答

0

分区键必须在keycondition表达式中。请包含分区键并尝试。当你查询dynamodb时,分区键是必须的。当您扫描dynamodb时,分区键是可选的。这是dynamodb中查询与扫描之间的主要区别。

+0

我已经在我的keycondition表达式中添加了分区键(userid)。 –

+0

您可以运行describe table命令并粘贴表格结构吗? – notionquest

+0

我在我的问题中添加了表结构 –

0

这是工作查询和表结构。

{ 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"}} 
+0

这是否解决了您的问题?如果是,请您接受答案吗? – notionquest