3 回答
TA贡献1801条经验 获得超16个赞
要添加到前面的答案中,当前您还可以使用类似的方法来检查错误代码(在示例中:检查重复的键)。
import "github.com/jackc/pgx"
...
func isDuplicateKeyError(err error) bool {
pgErr, ok := err.(pgx.PgError)
if ok {
// unique_violation = 23505
return pgErr.Code == "23505"
}
return false
}
TA贡献1886条经验 获得超2个赞
lib/pq是标准的 postgres 驱动程序。如果出现查询错误,它将返回一个pq.Error对象(即使您使用的是 GORM)。该pq.Error类型有一个Code字段,您可以检查该字段以查看错误原因。
if err, ok := err.(*pq.Error); ok && err.Code.Name() == "unique_violation" {
// handle error
}
TA贡献1836条经验 获得超5个赞
在 Gorm v1.21 中,我相信你可以...
配置记录器
import (
gormLogger "gorm.io/gorm/logger"
)
func main() {
db, err := gorm.Open(
sqlite.Open("test.db"),
&gorm.Config{
Logger: gormLogger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
gormLogger.Config {
LogLevel: gormLogger.Silent,
// IgnoreRecordNotFoundError: true,
},
),
},
)
}
https://gorm.io/docs/logger.html#Logger
捕获并打印您自己的错误消息
result := db.Where("email = ?", "test@test.com").Take(&user)
if !errors.Is(result.Error, gorm.ErrRecordNotFound) {
fmt.Println("record already exists")
// Or use a logger
// logger.Info("record already exists")
}
https://gorm.io/docs/query.html#Retrieving-a-single-object
https://gorm.io/docs/error_handling.html#ErrRecordNotFound
https://github.com/go-gorm/gorm/blob/master/errors.go
- 3 回答
- 0 关注
- 143 浏览
添加回答
举报