mysql - 查询行中的最大值在 GoRM 中返回 "0"

标签 mysql go go-gorm

将 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/

相关文章:

Php 登录有效,但忽略 MySQL 脚本中的用户类型字段

Gorm 创建并返回值 Many2many

go - 如何从另一个文件或包导入 gorm db 连接

go - Gorm执行SELECT * FROM表名,但是它也执行WHERE “tablename” .“id” = 0;找不到记录返回

php - PHP 脚本未添加 MySQL 数据

mysql - 有条件地更改 SQL 中的排序方向

javascript - mysql 没有加入数据

Golang sqldatabase 行.Next

go - 在其他程序包中初始化并调用struct时,是否可能仅返回一个字段?

go - 通过 go 函数的参数返回值,该函数是从 C 调用的