【发布时间】:2015-03-29 21:14:38
【问题描述】:
我正在使用 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 的行。
这是来自 pgAdminIII 的屏幕截图,我希望能对这个问题有所了解:
关于可能出现什么问题的任何想法?我完全不知所措,在这里......
【问题讨论】:
-
添加一些示例代码来展示如何将值添加到数据库中可能会很有用。您确定在插入 Pack_ID 时没有拼错变量名并且使用的是空变量吗?
-
@Jasper,数据库是用 PgAdminIII 手动填充的。我检查了几次,我看不出有拼写错误。但是,我是 postgres 的新手,有没有办法转储有关表的相关摘要信息?
-
@Jasper,但是,列名和结构名存在一个(可能)相关的差异。在 postgres 中,该列称为
pack_id,但在 go 代码中,它称为Pack_ID。也就是说,db:pack_id声明不应该让我摆脱麻烦吗? (编辑:请看上面的截图) -
鉴于 Postgres 使用
$1, $2, $3, etc而不是?进行参数化,您的意思是不是.Where("uuid = $1", uuid).First(&c)? -
@elithrar,大概 :) 到底有什么区别?无论如何,我已经进行了更改,但我原来的问题仍然存在。
标签: postgresql go go-gorm