gpt4 book ai didi

amazon-dynamodb - 键模式中的属性数量必须与属性定义中定义的属性数量相匹配

转载 作者:行者123 更新时间:2023-12-03 05:10:36 25 4
gpt4 key购买 nike

我尝试使用 DynamoDB JavaScript shell 创建一个简单的表,但遇到此异常:

{
"message": "The number of attributes in key schema must match the number of attributes defined in attribute definitions.",
"code": "ValidationException",
"time": "2015-06-16T10:24:23.319Z",
"statusCode": 400,
"retryable": false
}

下面是我尝试创建的表格:

var params = {
TableName: 'table_name',
KeySchema: [
{
AttributeName: 'hash_key_attribute_name',
KeyType: 'HASH'
}
],
AttributeDefinitions: [
{
AttributeName: 'hash_key_attribute_name',
AttributeType: 'S'
},
{
AttributeName: 'attribute_name_1',
AttributeType: 'S'
}
],
ProvisionedThroughput: {
ReadCapacityUnits: 1,
WriteCapacityUnits: 1
}
};
dynamodb.createTable(params, function(err, data) {
if (err) print(err);
else print(data);
});

但是,如果我将第二个属性添加到 KeySchema 中,它就可以正常工作。工作台下方:

var params = {
TableName: 'table_name',
KeySchema: [
{
AttributeName: 'hash_key_attribute_name',
KeyType: 'HASH'
},
{
AttributeName: 'attribute_name_1',
KeyType: 'RANGE'
}
],
AttributeDefinitions: [
{
AttributeName: 'hash_key_attribute_name',
AttributeType: 'S'
},
{
AttributeName: 'attribute_name_1',
AttributeType: 'S'
}
],
ProvisionedThroughput: {
ReadCapacityUnits: 1,
WriteCapacityUnits: 1
}
};
dynamodb.createTable(params, function(err, data) {
if (err) print(err);
else print(data);
});

我不想将范围添加到键架构中。知道如何修复它吗?

最佳答案

TL;DR 不要在 AttributeDefinitions 中包含任何非键属性定义。

DynamoDB 是无架构的(关键架构除外)

也就是说,创建表时确实需要指定键模式(属性名称和类型)。好吧,您不需要指定任何非键属性。您可以稍后放置具有任何属性的项目(当然必须包括键)。

来自documentation pageAttributeDefinitions 定义为:

An array of attributes that describe the key schema for the table and indexes.

创建表时,AttributeDefinitions 字段仅用于哈希和/或范围键。在第一种情况下,当您提供 2 个 AttributeDefinitions 时,只有哈希键(数字 1)。这就是异常的根本原因。

关于amazon-dynamodb - 键模式中的属性数量必须与属性定义中定义的属性数量相匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30866030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com