我并不是真的主张改变这种行为,但是在当前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()
4条答案
按热度按时间mznpcxlj1#
CC @bradfitz@kardianos for SQL, @robpike for prose
6psbrbz92#
在主控上有一个变化,可能会解决这个问题。如果rows.lasterr为nil,扫描应该现在返回错误。
这有帮助吗?
laawzig23#
哦,等等,你想要相反的。如果你想让Scan将扫描错误存储在lasterr中(如果lasterr为nil),以便在rows.Err()中报告。
u3r8eeie4#
是的。由于
Scan
调用发生在迭代开始之后且在结束之前,因此“在迭代期间”这个短语并不明显地意图排除Scan
。