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

为什么 go-sql-driver 无法处理 MySQL bigint 字段中的 NULL?

为什么 go-sql-driver 无法处理 MySQL bigint 字段中的 NULL?

Go
holdtom 2021-11-29 16:41:27
我正在使用go-sql-driver连接到 MySQL 数据库。在我的一张表中,我使用一个名为 queue_length 的字段作为 BIGINT。该字段默认为 NULL。当我尝试在 Golang 中使用 go-sql-driver 查询表中的所有字段时,queue_length 之后的字段没有出现在包括 queue_length 在内的结果集中。在我的用例中,表字段 [unique_id, qid, title, text, queue_length, user_id, date_created, last_updated]当我执行以下代码时,我获得了 queue_length 之前字段的值,但 [queue_length, user_id, date_created, last_updated] 字段没有出现在结果集中。但是,如果我不选择 queue_length,则所有字段都将出现在结果集中。我正在扫描类型为 int64 的代码中 queueLength 变量中的 queue_length。来自表的值为 NULL。我也试过类型转换。没用。这是 go-sql-driver 中的错误还是我做错了什么?有人可以帮我解决这个问题吗?func GetQueues(uniqueId string) ([]*objects.Queue, error) {    db, err := GetDBConnection()    defer db.Close()    rows, err := db.Query("SELECT qid, title, text, queue_length, user_id, date_created, last_updated FROM queue WHERE unique_id = ?", uniqueId)    if err != nil {        panic(err.Error())    }    defer rows.Close()    var qId             string    var title           string    var text            string    var userId          string    var dateCreated     string    var lastUpdated     string    var queueLength     int64    var queue           *objects.Queue    var queues          []*objects.Queue    for rows.Next() {        err           = rows.Scan(&qId, &title, &text, &queueLength, &userId, &dateCreated, &lastUpdated)        queue         = &objects.Queue{ QId: qId, Title: title, Text: text, UniqueId: uniqueId, UserId: userId, DateCreated: dateCreated, LastUpdated: lastUpdated, QueueLength: queueLength }        queues        = append(queues, queue)    }    err = rows.Err()    if err != nil {        panic(err.Error())        return nil, err    }    return queues, err}
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

queueLength应该是一个NullInt64而不是一个int64

var queueLength sql.NullInt64

在围棋ints不能是nil那么有没有办法Scan保存NULLqueueLength


查看完整回答
反对 回复 2021-11-29
?
萧十郎

TA贡献1815条经验 获得超12个赞

我将此工具用于 Null 和 Zero 字段,它包含许多数据类型。

github 网址是https://github.com/guregu/null



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

添加回答

举报

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