刚开始使用 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 指针取消引用。
- 2 回答
- 0 关注
- 166 浏览
添加回答
举报
0/150
提交
取消