gorm(v1.20) 连接 pgsql数据库,使用 find first 查询方法,当返回数据为空时报错
```go
errors.Is(err, gorm.ErrRecordNotFound)
```
使用该方法也无法检查出该类错误,目前无法处理这个错误,只能通过字符串判断。
求助大佬,是否有更好的解决方案。
查询很多gorm操作没有解决方案,gorm是否对pgsql无法更好的兼容?
是否有其他orm推荐,或者更适合pgsql的操作方式。
------------------------------------
代码补全(first 不可行,这里用的find的)
```go
func GetUserByOpenID(openID string) (users []User, err error) {
err = db.Where("wechatOpenID = ?", openID).Limit(1).Find(&users).Error
return
}
users, err := models.GetUserByOpenID(body.OpenID)
fmt.Println(err)
// ERROR: column "wechatopenid" does not exist (SQLSTATE 42703)
fmt.Println(errors.Is(err, gorm.ErrRecordNotFound))
// false
```
你用`fmt.Printf("%T\n", err)`打印一下错误具体类型,查查源码就知道了,或者调试时候看看这个`err`是什么类型。我试了`mysql`,`sqlite`,`pgsql`这三个相同代码返回的错误都不一样,都是各自库里面的错误类型。上面的代码是我看了`pgsql`库源码搞出来的。不过我看的这三个都有具体错误编码,是可以精确匹配的。
#5
更多评论