如何解决DynamoDB PutItem 在应该替换项目时使用相同的分区键创建多个项目
我在本地将 DynamoDB 与 Nosql Workbench 和 Express API 一起使用。
const params = {
AttributeDeFinitions: [
{
AttributeName: 'id',AttributeType: 'S',},],KeySchema: [
{
AttributeName: 'id',KeyType: 'HASH',}
]
TableName: table.name,ProvisionedThroughput: {
ReadCapacityUnits: 1,WriteCapacityUnits: 1
},}
dynamo.createTable(params).promise() // ... simplified version
我使用 DocumentClient 更新一个项目:
const db = new AWS.DynamoDB.DocumentClient(configOptions);
const data = await db.put({
TableName,Item,}) // ... interact with result
有时,它会在 DynamoDB 中创建一个具有完全相同 id
值的新项目,即使我将其创建为 HASH 并将其设为分区键。
但是,它不会每次发生。我似乎无法始终如一地重新创建它。
我在创建此表或更新导致此问题的项目时是否做错了什么?
在此处查看项目 97/98,此图像是我的 Nosql Workbench,您可以看到有两个项目具有相同的 id
解决方法
与 AWS Support 取得联系后,发现这是在本地使用 DynamoDB 的一个已知问题。他们提供了以下修复指南:
正如您提到的,您正在使用 docker 镜像进行部署 DynamoDB 本地 [1],请继续删除 步骤 2 中给出的“-optimizeDbBeforeStartup”标志(“Docker 选项卡”)(和 然后将其保存为 docker-compose.yml):
-
从参数列表中删除“-optimizeDbBeforeStartup”: ========== .. .. 命令:“-jar DynamoDBLocal.jar -sharedDb -dbPath ./data”.. .. ==========
-
创建表格并插入项目
-
docker-compose down
-
docker-compose up
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。