1
err = db.Find(model)
err == "mysql select one: sql: no rows in result set"

我不认为这是一个错误。如何在 buffalo/pop 中关闭它?


errors.Is(err, sql.ErrNoRows)   === false


无法解开错误

    fmt.Println(111)
    for {
        fmt.Println("err:", err,err.Error(),reflect.TypeOf(err))
        err = errors.Unwrap(err)
        if err == nil {
            break
        }
    }
    fmt.Println(222)


err: mysql select one: sql: no rows in result set mysql select one: sql: no rows in result set *errors.withStack


4

1 回答 1

2

buffalo/pop 仍然使用 pkg/errors 包 ( https://godoc.org/github.com/pkg/errors ) 来包装它的错误。虽然仍然如此,但您可以使用errors.Cause此包中的方法,并将其与sql.ErrNoRows错误进行比较。

if errors.Cause(err) == sql.ErrNoRows {
// Do what you need here.
}
于 2019-11-12T22:00:01.793 回答