2

使用 node.js 我尝试再次删除并创建 dynamoDB 表。我需要从表中删除所有记录并添加新记录,所以我认为删除并重新创建整个表是一个很好的解决方案。我尝试使用此代码

dynamo.deleteTable({
        TableName: tableName
    }, function(err, data){
        if (err) {
            console.log(err);
        }
        else {
            dynamo.createTable({
                TableName: tableName,
                KeySchema: [{
                    AttributeName: "id",
                    KeyType: "HASH"
                }],
                AttributeDefinitions: [{
                    AttributeName: "id",
                    AttributeType: "S"
                }],
                ProvisionedThroughput: {
                    ReadCapacityUnits: 10,
                    WriteCapacityUnits: 10
                }
            }, function(err){
                if (err) {
                    console.log(err);
                }
                else {
                    // putNewData(data, callback);
                }
            })
        }
    });

我得到错误 ResourceInUseException:表已经存在:

4

2 回答 2

2

DynamoDB 实际删除一个表需要一些时间,因此您需要等到该表被删除。

如果您收到错误 ResourceInUseException,则表示您尝试重新创建的表尚未删除。因此,您需要稍等片刻,然后重试。

如果您不更改表中的键,并且不创建新的本地二级索引,则可以改用 UpdateTable 方法。不过,这里有一些限制:

您一次只能执行以下操作之一:

修改表的预置吞吐量设置。

在桌子上启用或禁用 Streams。

从表中删除全局二级索引。

在表上创建一个新的全局二级索引。一旦索引开始

回填,您可以使用 UpdateTable 执行其他操作。

于 2017-07-29T06:19:56.503 回答
2

您可以使用 SDK 的tableNotExists服务员确保在调用之前已完全删除表createTable

于 2017-07-30T00:15:15.470 回答