2016-05-30 166 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