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

时间:2015-03-29 21:14:39

标签: 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
}

当我将UUID字符串传递给getChip时,会返回正确的行,并且c.Pack_ID的所有值都正确 ,始终为0。顺便说一下,Pack_ID 0永远不会有{{1}}行。

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

enter image description here

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

1 个答案:

答案 0 :(得分:5)

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

name:"value"

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

name:value

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

关于特定的struct标签:你确定你应该使用db吗?根据{{​​3}},您可能希望使用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"`
}