登录
首页 >  Golang >  Go教程

GORM Raw 查询 “unsupported destination” 错误:如何解决 “select database()” 查询结果映射问题?

时间:2024-11-10 22:22:03 165浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《GORM Raw 查询 “unsupported destination” 错误:如何解决 “select database()” 查询结果映射问题? 》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

GORM Raw 查询 “unsupported destination” 错误:如何解决 “select database()” 查询结果映射问题?

gorm raw查询“unsupported destination, should be slice or struct”错误:

在使用gorm进行原生sql查询时,如果出现“unsupported destination, should be slice or struct”错误,其根本原因在于gorm的raw方法本质上将查询结果映射到结构体或切片中,而像“select database()”这类查询结果与表结构无关。

官方文档提供的示例(var age int db.raw(...).scan(&age))之所以成功,是因为age是一个明确定义的变量,它符合gorm的映射机制。然而,像“select database()”这类查询结果无法直接映射到结构体或切片。

要解决这个问题,需要使用go原生的sql.db类型的queryrow方法,可以通过gorm.db结构体的db()方法获取sql.db类型。

修改后的正确代码如下:

func showCurrentDb() {
    var database string
    persistence.GetDB().DB().QueryRow("select database()").Scan(&database)
    fmt.Println("database ", database)
}

今天关于《GORM Raw 查询 “unsupported destination” 错误:如何解决 “select database()” 查询结果映射问题? 》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>