go mysql drive的一个问题

需要使用一个表更新另外一个表的时候

sql := `select uname, group_concat(title) from tags group by uname`
rows, err := db.Query(sql)
for rows.Next() {
  name := ""
  titles := ""
  err = rows.Scan(&name, &titles)
  // update user
  sql = `update user set title=? where name=?`
  _, err = db.Exec(sql, titles, name + "xx")
}

出现了报错:

[MySQL] 2017/11/15 12:23:22 packets.go:381: Busy buffer
panic: driver: bad connection
goroutine 1 [running]:
...

原因:
同一个事务每一个Query的结果集用的都是同一个缓存,必须把Query后的结果集清空才能再次执行

go mysql driver issue

你可能感兴趣的:(go mysql drive的一个问题)