为了账号安全,请及时绑定邮箱和手机立即绑定

Golang PutItem DynamoDB:运行时错误无效的内存地址或零指针取消引用

Golang PutItem DynamoDB:运行时错误无效的内存地址或零指针取消引用

Go
交互式爱情 2021-10-25 16:18:44
刚开始使用 golang 和 AWS 进行编程。我的函数中的代码块,尝试使用 AWS DynamoDB 创建一个新表并向其写入值。创建成功,但是当Write发生时程序崩溃。不知道为什么..如果有人能帮助我,我将不胜感激!**Logs**:2015/07/22 15:46:46 TableStatus: 0xc208193cb02015/07/22 15:46:46 End2015/07/22 15:46:48 Sleep 2: Before Write2015/07/22 15:46:48 Before Defining Inputpanic: runtime error: invalid memory address or nil pointer dereference[signal 0xb code=0x1 addr=0x20 pc=0x401b28]**Code Block:** {    log.Println("Entry+++")        cfg := aws.DefaultConfig        svc := dynamodb.New(cfg)        tableDefinition := &dynamodb.CreateTableInput{            TableName:            aws.String("table1"),            AttributeDefinitions: make([]*dynamodb.AttributeDefinition, 1, 1),            KeySchema:            make([]*dynamodb.KeySchemaElement, 1, 1),            ProvisionedThroughput: &dynamodb.ProvisionedThroughput{                ReadCapacityUnits:  aws.Long(1),                WriteCapacityUnits: aws.Long(1),            },        }        tableDefinition.KeySchema[0] = &dynamodb.KeySchemaElement{            AttributeName: aws.String("batch_id"),            KeyType:       aws.String("HASH"),        }        tableDefinition.AttributeDefinitions[0] = &dynamodb.AttributeDefinition{            AttributeName: aws.String("batch_id"),            AttributeType: aws.String("S"),        }        resp, err := svc.CreateTable(tableDefinition)        log.Println("After CreateTable---")        if err != nil {            log.Println("create table failed", err.Error())            return        }        if resp != nil && resp.TableDescription != nil {            log.Println(                "TableStatus:", resp.TableDescription.TableStatus)        }        log.Println("End")        //Some time before the createTable transaction gets committed.         time.Sleep(2 * time.Second)        log.Println("Sleep 2 Before Write")        testA := "batch_1" //value to be written to the db        // testB := "batch_name"        // testC := "530"        // testD := "Sample-Keyy-98"    }
查看完整描述

2 回答

?
偶然的你

TA贡献1841条经验 获得超3个赞

如果您可以显示错误的堆栈跟踪,那将非常有帮助。但在那之前我可以说当您尝试访问任何未初始化变量的成员时通常会发生此错误。例如,如果此错误出现在以下行

a := b.c

那么你需要检查 b 是否正确初始化。b 的值很可能是 nil,因此 nil 指针取消引用。


查看完整回答
反对 回复 2021-10-25
  • 2 回答
  • 0 关注
  • 166 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信