无法在 DynamoDB 中创建多个属性
Posted
技术标签:
【中文标题】无法在 DynamoDB 中创建多个属性【英文标题】:Not able to create Multiple Attribute in DynamoDB 【发布时间】:2022-01-16 13:59:08 【问题描述】:我需要创建一个具有四个属性的 DynamoDB 表。我正在使用以下 Java 程序:
String tableName = "devtest";
Table table = dynamoDB.createTable(tableName,
Arrays.asList(new KeySchemaElement("BIC", KeyType.HASH)), // Sort key
Arrays.asList(new AttributeDefinition("BIC", ScalarAttributeType.S),
new AttributeDefinition("Tenant", ScalarAttributeType.S),
new AttributeDefinition("TenantID", ScalarAttributeType.S),
new AttributeDefinition("Destination", ScalarAttributeType.S)),
new ProvisionedThroughput(10L, 10L));
table.waitForActive();
System.out.println("Success. Table status: " + table.getDescription().getTableStatus());
我总是收到以下错误:
Unable to create table:
Unable to unmarshall exception response with the unmarshallers provided (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: ValidationException; Request ID: bc0565ac-9d44-4876-934a-b39fbe8ca3f1)
如何解决这个错误?
【问题讨论】:
听起来您可能没有适当的权限来创建表 我有,我正在使用本地主机 AmazonDynamoDB 客户端 = AmazonDynamoDBClientBuilder.standard() .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("localhost:8000", "ap-southeast-2")) .build( ); String tableName = "devtest"; Table table = dynamoDB.createTable(tableName, Arrays.asList(new KeySchemaElement("BIC", KeyType.HASH)), // 排序键 Arrays.asList(new AttributeDefinition("BIC", ScalarAttributeType.S)) new ProvisionedThroughput(10L , 10L)); table.waitForActive();如果我使用上面的代码,则表正在成功创建 谁能帮我解决这个问题 【参考方案1】:你只能有一个属性BIC
,因为这是你的HASH
。由于您没有任何排序键、本地或全局二级索引,因此您无法定义任何其他属性。
DynamoDB 无模式,这意味着它没有任何自定义结构。
【讨论】:
以上是关于无法在 DynamoDB 中创建多个属性的主要内容,如果未能解决你的问题,请参考以下文章
Dynamodb:使用CreateTable在AttributeType Map,List,JSON中创建一个表
在 Cloudformation 中创建 DynamoDB 表失败
Dynamics CRM - 在 Dynamics CRM 开发中创建一个 Entity 对象