GORM Raw原生查询报错“unsupported destination”该如何解决?
gorm raw原生查询 报错unsupported destination
在使用gorm原生查询时,如果出现“unsupported destination, should be slice or struct”错误,原因在于查询的目的地(destination)必须是slice或struct,而查询语句本身的结果与表结构无关。
gorm基于表到结构体的映射来实现逻辑。这意味着,当使用gorm的raw方法查询时,需要提供一个与表结构对应的目的地来接收查询结果。然而,某些查询结果可能无法与特定的表结构相对应,例如查询数据库名称的查询语句“select database()”。
修复方法:
要解决此错误,可以使用go原生sql.db类型的queryrow方法来执行查询,如下所示:
func showCurrentDb() { var database string persistence.GetDB().DB().QueryRow("select database()").Scan(&database) fmt.Println("database ", database) }
具体原因:
gorm.db类型的raw方法与搜索结构体相关,而搜索结构体是基于表查找的。当找不到与查询结果集对应的表结构时,就会报出不支持的目的地错误。而原生sql.db类型的queryrow方法则不需要表结构的对应关系,因此可以正确处理此类查询。
以上就是GORM Raw原生查询报错“unsupported destination”该如何解决?的详细内容,更多请关注其它相关文章!