请想象一下这样的表:
FirstName, LastName, Fee, Opt_Out
String String Int TinyInt(4)
这样的结构:
type Dude struct {
Firstname string
Lastname string
Fee int
Opt_out int
}
保持简短:我使用数据库/ sql扫描结构没有任何问题,除非涉及到TinyInt。
err = rows.Scan(&firstname, &lastname, &fee, &opt_out)
扫描之后,在为我的结构赋值之前,我
fmt.PrintLn(Opt_out)
并且它们总是返回零值。 如果我将查询直接插入sql server,我会得到正确的,并且我期待的是零。
我也尝试更改" Opt_out"在struct to string中,并试图通过执行
来通过查询本身进行转换IF(Opt_out=1,"yes","no")
并发生类似的事情,在sql中运行的查询返回预期结果,但golang返回空值。
我正在画一个空白。有任何想法吗?
答案 0 :(得分:3)
哎呀。好吧,这显然与tinyint本身无关。
数据库中的“费用”列中包含空值,预先存在的查询设置为使用空字符串替换null。
IFNULL(fee,'')
似乎sql驱动程序在看到它们时非常安静地“破坏”,然后放弃了处理所有内容。
我的修复是用IFNULL修改查询(费用,0),一切都恢复了生机。
谢谢RayfenWindspear!如果没有您的反馈,我不会给它额外的努力。