我正在使用该github.com/go-sql-driver/mysql库与我的 MySQL 数据库进行交互。一切正常,除非我的查询超过 20 条记录。查询返回结果集很好,但是当我循环到第 21 条记录时,它会出现恐慌。
我以这种方式查询我的数据库:
row, err = store.db.Query(myquerystring)
我正在提取返回值,如下所示:
indx = 0
for row.Next() {
err = row.Scan(
&mySlice[indx].Val1, &mySlice[indx].Val2
)
if err != nil {
if err == sql.ErrNoRows {
log.Print("No records found")
} else {
log.Printf("Error retrieving data: %s", err.Error())
}
}
indx++
}
我得到的错误不是来自我的错误处理,它在检索第 21 条记录时立即发生。我将登录作为 for 循环中的第一件事和最后一件事,我得到了第 20 条记录末尾的日志,但没有写入第 21 条记录的第一个日志,因此这似乎是导致恐慌的行for row.Next()。
我得到的错误是:
http: panic serving xxx.xxx.xxx.xxx:xxxxx: runtime error: invalid memory address or nil pointer dereference
这就是我初始化切片的方式:
**sqlstring 与上面的查询相同,只是所有字段都从 select 中删除并且仅count(tableid)返回 a 。
row, err := store.db.Query(sqlString)
row.Next()
err = row.Scan(
&count,
)
var mySlice = make([]mystruct, count)
慕标琳琳
相关分类