我收到这个错误 Scan error on column index 1: converting string "<nil>" to a int64: strconv.ParseInt: parsing "<nil>": invalid syntax尝试运行此简单代码时:var id int64var replyTo *int64replyTo = new(int64)query := ` SELECT id, reply_to FROM message WHERE id = 211 LIMIT 1;`if err := sql.DB.QueryRow(query).Scan(&id, replyTo); err != nil { log.Println(err)}spew.Dump(id, replyTo)我从中选择的表格如下所示:如果我将选择查询更改为: WHERE id = 210,而不是 211 则它可以工作。sql.DB 只是 sqlx 库的一个实例。var DB *sqlx.DB我正在使用指针来捕获数据库中的 NULL 列。我正在使用指针,因为我不确定 sql.NullInt64 是否与 sqlx 库配合良好。为什么我会收到这个错误?我该怎么办?
1 回答
富国沪深
TA贡献1790条经验 获得超9个赞
Scan 需要一个指向您的指针的指针才能工作:
var id int64
var replyTo *int64
replyTo = new(int64)
query := `
SELECT id, reply_to
FROM message
WHERE id = 211
LIMIT 1;
`
// The change is here : &replyTo instead of just replyTo
if err := sql.DB.QueryRow(query).Scan(&id, &replyTo); err != nil {
log.Println(err)
}
spew.Dump(id, replyTo)
然后不要忘记replyTo == nil在使用该值之前进行测试*replyTo
替代解决方案:使用sql.NullInt64:https : //golang.org/pkg/database/sql/#NullInt64
- 1 回答
- 0 关注
- 186 浏览
添加回答
举报
0/150
提交
取消