0

Mit node.js versuche ich die dynamoDB Tabelle wieder zu löschen und zu erstellen. Ich muss alle Aufzeichnungen von der Tabelle löschen und neu setzen, also denke ich, ist gute Lösung, ganze Tabelle einfach zu löschen und neu herzustellen. Ich versuche, mit diesem CodeLösche und erstelle DynamoDB Tabelle

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); 
       } 
      }) 
     } 
    }); 

und ich bekomme Fehler ResourceInUseException: Tabelle ist bereits vorhanden:

Antwort

1

können Sie die tableNotExists waiter SDK verwenden, um eine Tabelle, um sicherzustellen, wurde vor dem Aufruf createTable vollständig gelöscht.

+0

Schöne Lösung, Tnx – Nemanja

2

Es dauert einige Zeit für DynamoDB, um tatsächlich eine Tabelle zu entfernen, so müssen Sie warten, bis die Tabelle entfernt wird.

Wenn Sie einen Fehler ResourceInUseException erhalten, bedeutet dies, dass die Tabelle, die Sie neu erstellen möchten, noch nicht gelöscht wurde. Sie müssen also kurz warten und es erneut versuchen.

Wenn Sie nicht ändern, welchen Schlüssel Sie in Ihrer Tabelle haben und wenn Sie keine neuen lokalen Sekundärindizes erstellen, können Sie stattdessen die UpdateTable-Methode verwenden. Hier sind einige Einschränkungen aber:

Sie nur eine der folgenden Operationen gleichzeitig durchführen können:

Ändern Sie die bereitgestellten Durchsatz Einstellungen der Tabelle.

Aktivieren oder Deaktivieren von Streams auf dem Tisch.

Entfernen Sie einen globalen sekundären Index aus der Tabelle.

Erstellen Sie einen neuen globalen sekundären Index für die Tabelle. Sobald der Index

Verfüllung beginnt, können Sie UpdateTable verwenden, um andere Vorgänge auszuführen.

+0

hmm ich denke, dass Callback mir dafür helfen wird. Wie kann ich wissen, wenn eine Tabelle gelöscht wird, ist das ein Ereignis oder nur um ein Timeout zu setzen und hoffe, dass das Löschen gemacht wird? – Nemanja

+1

Ich würde vorschlagen, den createTable-API-Aufruf mit Exponentialbackoff zu wiederholen. Doc: http://docs.aws.amazon.com/general/latest/gr/api-retries.html – Antonio

+0

Leider gibt es kein Ereignis, wenn eine Tabelle gelöscht wird, und es gibt kein Zeitlimit, das zum Entfernen benötigt wird ein Tisch. Der Rückruf wird aufgerufen, wenn DynamoDB eine Antwort zurückgegeben hat. Dies kann entweder ein Erfolg oder ein Fehler sein (wenn die Tabelle noch nicht gelöscht wurde). –

Verwandte Themen