admin管理员组文章数量:1635990
在学习使用golang 操作数据库的过程中,使用sqlx 库查询数据库遇到报错信息
源码如下:
package main
import (
"database/sql"
"fmt"
_ "github/go-sql-driver/mysql"
"github/jmoiron/sqlx"
)
var DB *sqlx.DB
func initDb() error {
var err error
dsn := "root:123456@tcp(127.0.0.1:3306)/golang"
DB, err = sqlx.Open("mysql", dsn)
if err != nil {
return err
}
DB.SetMaxOpenConns(100)
DB.SetMaxIdleConns(16)
return nil
}
type User struct {
Id int64 `db:id`
Name sql.NullString `db:name`
Age int `db:age`
}
func testSqlxQuery() {
sqlstr := "select id,name,age from user where id=?"
var user User
err := DB.Get(&user, sqlstr, 3)
if err != nil {
fmt.Printf("select failed, err:%v\n", err)
return
}
fmt.Printf("user:%#v\n", user)
}
func main() {
err := initDb()
if err != nil {
fmt.Printf("init db failed, err:%v\n", err)
return
}
testSqlxQuery()
}
go build 后,执行报错:
missing destination name id in *main.User
在使用sql 库查询数据库没问题,使用sqlx反而出现错误,经比对发现,是定义结构体对象时,tag标记未加双引号导致,加引号后问题解决。
type User struct {
Id int64 `db:"id"`
Name sql.NullString `db:"name"`
Age int `db:"age"`
}
针对此类问题要特别注意,在使用tag的使用切记增加双引号,避免出现此类低级错误。
本文标签: errmissingGolangsqlxMain
版权声明:本文标题:golang sqlx err missing destination name id in *main.User 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1729215017a1190326.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论