Rom*_*aza 1 amazon-web-services amazon-dynamodb aws-php-sdk
根据此文档,DynamoDB 支持映射 (M) 和列表 (L) 类型,但是当我尝试创建具有 (L) 类型的表时,出现错误:
ValidationException(客户端):检测到 1 个验证错误:“attributeDefinitions.2.member.attributeType”处的值“L”未能满足约束:成员必须满足枚举值集:[B、N、S]
将ThreadReplyIds
属性添加到表信息后会发生这种情况:
[
'AttributeDefinitions' => [
[
'AttributeName' => 'UserId',
'AttributeType' => 'N',
],
[
'AttributeName' => 'ThreadReplyIds', // <<---
'AttributeType' => 'L',
],
[
'AttributeName' => 'Title',
'AttributeType' => 'S',
],
],
'KeySchema' => [
[
'AttributeName' => 'UserId',
'KeyType' => 'HASH',
],
[
'AttributeName' => 'Title',
'KeyType' => 'RANGE',
],
],
'ProvisionedThroughput' => [
'ReadCapacityUnits' => 5,
'WriteCapacityUnits' => 5,
],
'TableName' => 'Thread',
]
Run Code Online (Sandbox Code Playgroud)
我的目标是存储一个列表或一组整数值ThreadReplyIds
。我究竟做错了什么?
起初,我认为这可能是您使用的 SDK 版本。但是在阅读了一些文档之后,似乎在创建表时,任何 AttributeDefinition 的 AttributeType 只能是 'S|N|B' 之一(意思是 'String'、'Number' 或 'Binary')。参考:PHP SDK DynamoDB AttributeDefinition。
这是有道理的,因为无论如何您都不能在 KeySchema 中使用 List。因此,在创建表时无需为您的列表定义属性。在创建表后在表中放置或更新项目时,您始终可以将此属性添加到您想要的任何数据中。请参阅此处:PHP SDK DynamoDB PutItem
归档时间: |
|
查看次数: |
3491 次 |
最近记录: |