go database/sql: *Rows.Err() does not return errors from *Rows.Scan()

kzipqqlq  于 6个月前  发布在  Go
关注(0)|答案(4)|浏览(60)

我并不是真的主张改变这种行为,但是在当前Rows.Err()文档中使用“迭代”这个词对于*Rows.Scan()的行为来说是模糊的。提供更多的例子和/或更精确的文档会有所帮助。

你正在使用的Go版本是什么( go version )?

go版本 go1.10.2 linux/amd64

这个问题在最新版本中是否重现?

是的

你做了什么?

https://play.golang.org/p/1xbP8gEMNtb

你期望看到什么?

(根据对Rows.Err()文档的某种阅读:)

2018/06/07 10:24:45 Error from Scan(...): sql: Scan error on column index 0: sql/driver: couldn't convert 42 into type bool
2018/06/07 10:24:45 Error from Err(): sql: Scan error on column index 0: sql/driver: couldn't convert 42 into type bool

你实际上看到了什么?

2018/06/07 10:24:45 Error from Scan(...): sql: Scan error on column index 0: sql/driver: couldn't convert 42 into type bool
2018/06/07 10:24:45 No error from Err()
mznpcxlj

mznpcxlj1#

CC @bradfitz@kardianos for SQL, @robpike for prose

6psbrbz9

6psbrbz92#

在主控上有一个变化,可能会解决这个问题。如果rows.lasterr为nil,扫描应该现在返回错误。
这有帮助吗?

laawzig2

laawzig23#

哦,等等,你想要相反的。如果你想让Scan将扫描错误存储在lasterr中(如果lasterr为nil),以便在rows.Err()中报告。

u3r8eeie

u3r8eeie4#

是的。由于Scan调用发生在迭代开始之后且在结束之前,因此“在迭代期间”这个短语并不明显地意图排除Scan

相关问题