为什么我的数据库列的值总是0?

Why is the value of my database column always 0?

我正在使用 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
}

当我将 UUID 字符串传递给 getChip 时,返回了正确的行并且所有值都是正确的 除了 c.Pack_ID,它始终是 0。顺便说一句,从来没有 Pack_ID0 的行。

这是 pgAdminIII 的屏幕截图,我希望它能对问题有所启发:

关于可能出现的问题有什么想法吗?我完全不知所措,这里...

您使用的结构标签似乎格式不正确。结构标签 should be of the form:

name:"value"

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

name:value

尝试更正此问题。否则,Go 中的结构标记解析器没有机会工作,因为它依赖于那些引号,as seen in the struct tag parser implementation.

关于特定结构标签:您确定要使用 db 吗?根据 Gorm documentation,您可能想使用 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"`
}