将 GoRM 与 mySQL 数据库结合使用时,我无法从相当简单的查询返回数据。
var newPrsPk struct {
presentation_pk int `gorm:"column:presentation_pk"`
}
db.Raw("select max(presentation_pk) as presentation_pk from presentation").Scan(&newPrsPk)
log.Println(newPrsPk)
log.Println(newPrsPk.presentation_pk)
这会产生以下输出:
[2023-06-16 09:53:27] [43.29ms] select max(presentation_pk) as presentation_pk from presentation
[1 rows affected or returned ]
2023/06/16 09:53:27 {0}
2023/06/16 09:53:27 0
但是 0 绝对不是该列的最大值,并且在 mySQL 工作台中运行查询会返回适当的值,因此我必须假设我的编写方式有问题。
GoRM 的文档并不令人惊奇,但这是一个非常简单的查询,所以我很困惑。
“presentation_pk”是我表中的一个自动递增 int 字段,并且此查询立即遵循 GoRM Create() 函数(因为似乎没有办法从 mySQL 返回自动递增字段)。鉴于我看不到任何明确的“提交”函数,我假设 GoRM 自动提交更改,并且这不是并发问题。
如有任何帮助,我们将不胜感激。
最佳答案
当使用 Gorm 时,你的结构变量需要是 PascalCase 而不是蛇形命名法。看看约定document here然后你可以看到Declaring Models here .
如果您将结构更改为如下所示:
var result struct {
PresentationPK int `gorm:"column:presentation_pk"`
}
然后您的查询应该可以运行,然后您可以使用 PresentationPK
打印结果
关于mysql - 查询行中的最大值在 GoRM 中返回 "0",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76491655/