为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中尝试扫描到 int64 指针时出错

在 Go 中尝试扫描到 int64 指针时出错

Go
宝慕林4294392 2021-11-15 16:06:14
我收到这个错误 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


查看完整回答
反对 回复 2021-11-15
  • 1 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信