为什么我的数据库列的值始终为0?

blz*_*blz 0 postgresql go go-gorm

我正在使用go-gorm从PostgreSQL数据库中获取值.相关代码如下所示:

type Chip struct {
    UUID    string `db:uuid`
    URL     string `db:url`
    N       int    `db:n`
    Pack_ID int    `db:pack_id`
}

func getChip(uuid string) (Chip, error) {
    var c Chip
    err := DB.Model(Chip{}).Where("uuid = ?", uuid).First(&c)
    return c, err.Error
}
Run Code Online (Sandbox Code Playgroud)

当我通过一个UUID字符串getChip,返回正确的行和所有值都正确,除了c.Pack_ID,这是永远0.顺便说一下,从来没有一行Pack_ID0.

这是pgAdminIII的截图,我希望能够解释一下这个问题:

在此输入图像描述

关于可能出错的任何想法?我完全失去了,这里......

dyo*_*yoo 5

您正在使用的结构标记似乎格式不正确.struct标签的格式应为:

name:"value"
Run Code Online (Sandbox Code Playgroud)

但是你得到的是缺少值周围的引号:

name:value
Run Code Online (Sandbox Code Playgroud)

尝试纠正这个.否则,Go中的struct标记解析器没有机会工作,因为它依赖于那些引号,如struct tag parser实现中所示.

关于特定的struct标签:你确定你应该使用db吗?根据Gorm文档,您可能想要使用gorm:"column:...".我期待你的类型定义是:

type Chip struct {
    UUID    string `gorm:"column:uuid;primary_key"`
    URL     string `gorm:"column:url"`
    N       int    `gorm:"column:n"`
    Pack_ID int    `gorm:"column:pack_id"`
}
Run Code Online (Sandbox Code Playgroud)