在使用带有MySQL数据库的GORM时,我在从一个相当简单的查询返回数据时遇到了问题.

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时,您的 struct 变量需要是PascalCase,而不是蛇形大小写.看一看大会document here,然后你可以看到大约Declaring Models here.

如果您将 struct 更改为如下所示:

var result struct {
    PresentationPK int `gorm:"column:presentation_pk"`
}

然后,您的查询应该可以工作,然后您可以使用PresentationPK打印结果

Mysql相关问答推荐

MySQL生成的整型计算可以为空吗?

对多个数据库运行UPDATE mySQL查询

LaravelEloquent ToSql()缺少连接表

在MySQL中使用FIRST_VALUE()

使用字符串文字与使用日期文字时的SQL行为

将 GORM 与自定义连接表和外键结合使用

错误:此查询集包含对外部查询的引用,并且只能在子查询中使用

SQL查询以查找两个特定行的总和

当mysql中只有一个索引列时,为什么使用范围条件锁定读取会锁定每条记录?

如何在 mysql 中获取 Day Wise 的平均值?

Mysql,显示谁已经和没有 Select 退出巴士服务

如何查询由另一个查询创建的表?

如何从具有第一行列值的表中 Select 客户的最新记录

如何创建一个判断行是否存在的mysql查询-如果存在我想插入一条新记录,否则增加一个值

在 PHP 中获取 MySQL 列的总和

自动登录 phpMyAdmin

将 Django DB 从 SQLite 迁移到 MySQL 的最佳方法是什么?

如何存储重复日期牢记夏令时

在mysql中复制没有数据的数据库 struct (带有空表)

设计用户角色和权限系统的最佳实践?