幸福

如人饮水,冷暖自知

Scan error on column index 5 unsupported driver Scan pair

Golang 操作mysql时,如下:
rows, err := db.Query("SELECT id,name,title,status FROM `tab1` WHERE id > ?", 100000867)
     var (
     id             int
     name       string
     title          string
     status       int
)
if err != nil {
     log.Fatal(err)
}

defer rows.Close()
    for rows.Next() {
        err := rows.Scan(&id, &name, &title, &status)
        if err != nil {
           log.Fatal(err)
        }
    fmt.Println("\n")
    log.Println(id, name, title, status)
}
当查询某字段返回null时,则会报如下类似错误:
sql: Scan error on column index 3: unsupported driver -> Scan pair: <nil> -> *string
    exit status 1
这是因为我们前面已经事先定义好了对应的变量类型,当查询结果返回null时,则同事先定义的类型不一致,由于Golang严格区分变量类型,所以才报错,解决方法是我们可以将可能返回空的字段类型定义为指针类型即可,如下:
    var (
        id             int
        name       string
        title          *string
        status       *int
    )
那么下次查询若当前指针字段返回null时,则其值指向nil,若有值时,则返回对应的字符串或是其它实现定义好的变量类型,以上!


去打赏

您的支持将鼓励我们继续创作!

[微信] 扫描二维码打赏

[支付宝] 扫描二维码打赏

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注