请教大家golang操作mysql问题

现在我需要在一次事务中进行两次select


tx, err := mysql.Begin()
if err != nil {
return
}

//进行第一次查询
rows, err := tx.Query("select ....")
if err != nil {
return
}
defer rows.Close()

//使用第一次查询结果进行第二次查询
var result string
for rows.Next{
if err = rows.Scan(&result); err != nil {
return
}
//第二次Query时会报错
rows2, err := tx.Query("select ....", result)
}

请问有什么方法可以解决?

已邀请:

sryan - backmir

赞同来自: wzywsk astaxie

https://github.com/go-sql-driver/mysql/issues/314


有同一个类型的issue,可以试着在第一个对rows的循环内把result全部读取出来,同时关闭rows,然后再去执行Query获得新的rows


造成的原因是在事务中,每一个tx对象都保持着一个连接,在commit/rollback后才会归还给连接池,对一个连接查询结果集有点问题,可以把前一个结果集的内容读出来后关闭,再进行一次读取

lake - 大叔

赞同来自:

这是用了哪个package? 还是标准的?
提示什么错误?

要回复问题请先登录注册