我正在尝试使用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,它就可以正常工作。a工作台下方:
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);
});
我不想将范围添加到密钥架构。知道怎么修吗?
仅当要使用KeySchema中的属性时,才在AttrubutedDefinitions中声明属性
或
当这些属性将用于全局二次索引(globalsecondaryindex)或本地二次索引(localsecondaryindex)时
对于使用yaml文件的任何人:
示例1:
假设您有3个属性-
AuctionsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: AuctionsTable
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: id
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
例子2:
对于相同的属性(即. id、status和createdAt),如果您也有Global秒级索引
或Local秒级索引
,那么您的yaml文件如下所示:
AuctionsTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: AuctionsTable-${self:provider.stage}
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: id
AttributeType: S
- AttributeName: status
AttributeType: S
- AttributeName: endingAt
AttributeType: S
KeySchema:
- AttributeName: id
KeyType: HASH
GlobalSecondaryIndexes:
- IndexName: statusAndEndDate
KeySchema:
- AttributeName: status
KeyType: HASH
- AttributeName: endingAt
KeyType: RANGE
Projection:
ProjectionType: ALL
我们在AttributeDefinitions中包含status和createdId仅仅是因为我们有一个使用上述属性的GlobalSecondaryIndex。
原因:DynamoDB只关心主键、Global秒级索引和Local秒级索引。您不需要指定不属于上述三重奏的任何其他类型的属性。
DynamoDB只关心用于分区的主键、GlobalSecondaryIndex和LocalSecondaryIndex。它不关心你对一个项目有什么其他属性。
当您在at“AttributeDefinitions”中使用非键属性时,必须将其用作索引,否则会违反DynamoDB的工作方式。请参见链接。
因此,如果不打算将非键属性用作索引或主键,则无需在“AttributeDefinitions”中放置非键属性。
var params = {
TableName: 'table_name',
KeySchema: [ // The type of of schema. Must start with a HASH type, with an optional second RANGE.
{ // Required HASH type attribute
AttributeName: 'UserId',
KeyType: 'HASH',
},
{ // Optional RANGE key type for HASH + RANGE tables
AttributeName: 'RemindTime',
KeyType: 'RANGE',
}
],
AttributeDefinitions: [ // The names and types of all primary and index key attributes only
{
AttributeName: 'UserId',
AttributeType: 'S', // (S | N | B) for string, number, binary
},
{
AttributeName: 'RemindTime',
AttributeType: 'S', // (S | N | B) for string, number, binary
},
{
AttributeName: 'AlarmId',
AttributeType: 'S', // (S | N | B) for string, number, binary
},
// ... more attributes ...
],
ProvisionedThroughput: { // required provisioned throughput for the table
ReadCapacityUnits: 1,
WriteCapacityUnits: 1,
},
LocalSecondaryIndexes: [ // optional (list of LocalSecondaryIndex)
{
IndexName: 'index_UserId_AlarmId',
KeySchema: [
{ // Required HASH type attribute - must match the table's HASH key attribute name
AttributeName: 'UserId',
KeyType: 'HASH',
},
{ // alternate RANGE key attribute for the secondary index
AttributeName: 'AlarmId',
KeyType: 'RANGE',
}
],
Projection: { // required
ProjectionType: 'ALL', // (ALL | KEYS_ONLY | INCLUDE)
},
},
// ... more local secondary indexes ...
],
};
dynamodb.createTable(params, function(err, data) {
if (err) ppJson(err); // an error occurred
else ppJson(data); // successful response
});```
TL;DR在属性定义中不包括任何非关键属性定义。
DynamoDB是无模式的(除了键模式)
也就是说,创建表时确实需要指定键模式(属性名称和类型)。嗯,您不需要指定任何非关键属性。您可以稍后放置具有任何属性的项(当然必须包括键)。
在文档页面中,属性定义定义定义为:
描述表和索引的键架构的属性数组。
当您创建表时,属性定义
字段仅用于哈希和/或范围键。在您的第一种情况下,只有哈希键(编号1),而您提供了2个属性定义。这是异常的根本原因。
试图向OpenLDAP添加一个新属性,但总是碰壁。我正在尝试向架构添加ipPhone属性,因为我不能在默认的telephoneNumber属性中包含*数字。 下面是我的LDIF文件,用于创建新属性并将其与objectClass类似。 我已经测试和谷歌了几个小时,但一直无法解决这个问题或找出我错过了什么!
问题内容: 我正在借助以下方法设置新的React:https : //github.com/facebookincubator/create-react- app 但是,我遇到了一个棉绒问题。我收到以下掉毛错误。 这是导致问题的代码: 我试着使用react / prop-types规则,但无济于事。 问题答案: 根据这个问题发表评论。 这似乎是因为您在安装时仅应使用create-react- ap
我们在 field 对应的 Tag 中对 Column 的一些属性进行定义,定义的方法基本和我们写SQL定义表结构类似,比如: type User struct { Id int64 Name string `xorm:"varchar(25) notnull unique 'usr_name' comment('姓名')"` } 对于不同的数据库系统,数据类型其实
问题内容: 我需要在CSS中定义的src属性。有没有办法指定这个属性? 问题答案:
本文向大家介绍C#自定义属性,包括了C#自定义属性的使用技巧和注意事项,需要的朋友参考一下 示例 查找具有自定义属性的属性-MyAttribute 查找给定属性上的所有自定义属性 枚举具有自定义属性的所有类-MyAttribute 在运行时读取自定义属性的值 用法
自定义标签的意义在于方便管理,可以给SIM卡增加一个标签,并且针对某个标签进行统计、查询及管理。支持批量操作。 设置号码自定义标签 支持针对订单、针对iccid进行自定义标签的设置。 号码详情页查询/设置自定义标签 号码详情页,可以查看当前号码已设置的自定义标签,并且可以针对其添加、修改。 自定义标签管理 可以增加、修改、删除自定义属性及其值。