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()” 查询结果映射问题?的详细内容,更多请关注其它相关文章!