首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:表未在DynamoDB中注册

错误:表未在DynamoDB中注册
EN

Stack Overflow用户
提问于 2019-02-26 10:55:08
回答 1查看 197关注 0票数 0

在为本地dynamodb使用pocodynamo时,未注册该表的错误。我正在尝试使用crud操作,但是当将数据插入到本地dynamodb表时,我得到了一个错误

System.ArgumentNullException:"Tabel尚未注册: Todo.参数名:表“

代码语言:javascript
复制
var awsDb = new AmazonDynamoDBClient("access key", "secret key", new AmazonDynamoDBConfig
        {
            ServiceURL = "http://localhost:8000",
        });
        var db = new PocoDynamo(awsDb);
        db.InitSchema();
var todos = 100.Times(i => new Todo { Content = "TODO " + i, Order = i });
        db.PutItems(todos);//getting error on this line

我已经通过以下方式创建了一个表:

代码语言:javascript
复制
            //AWSSDK
            var request = new CreateTableRequest
            {
                TableName = "Todo",
                KeySchema = new List<KeySchemaElement>
            {
                new KeySchemaElement("Id", KeyType.HASH),
            },
                AttributeDefinitions = new List<AttributeDefinition>
            {
                new AttributeDefinition("Id", ScalarAttributeType.N),
            },
                ProvisionedThroughput = new ProvisionedThroughput
                {
                    ReadCapacityUnits = 10,
                    WriteCapacityUnits = 5,
                }
            };
            awsDb.CreateTable(request);

验证表是否已创建并处于活动状态:

代码语言:javascript
复制
                var startAt = DateTime.UtcNow;
        var timeout = TimeSpan.FromSeconds(60);
        do
        {
            try
            {
                var descResponse = awsDb.DescribeTable("Todo");
                if (descResponse.Table.TableStatus == DynamoStatus.Active)
                {
                    Console.WriteLine("table Todo is Active");
                    break;
                }
                Thread.Sleep(TimeSpan.FromSeconds(2));
            }
            catch (ResourceNotFoundException)
            {
                Console.WriteLine("resource not found");
                // DescribeTable is eventually consistent. So you might get resource not found.
            }

            if (DateTime.UtcNow - startAt > timeout)
                throw new TimeoutException("Exceeded timeout of {0}".Fmt(timeout));

        } while (true);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-06 06:16:26

问题不在代码中,而是在DynamoDB实例中。我正在使用下载的本地DynamoDB数据库,并按照DynamoDB文档通过命令提示符启动它,但是,当我在visual中检查AWS时,它说实例已经停止。所以最终的解决方案是: 1.如果DynamoDB是手动启动的,停止它!2.确保端口8000是免费的。3.从AWS资源管理器启动DynamoDB。

要从AWS资源管理器启动DynamoDB : 1.打开AWS资源管理器2。从区域3的下拉列表中选择本地(localhost)。右键单击DynamoDB DynamoDB并选择“连接到DynamoDB本地进程”4。选中“开始新的DynamoDB本地进程”。5.安装最新版本6。确保java的路径是正确的(如果没有安装java,请安装它) 7。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54883869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档