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