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”该如何解决?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号