why, record not found ?
1. 运行环境
Golang 版本:1.17
2. 问题描述?
伪代码:
type AModel struct {
ID uint
// 在数据库为唯一性(索引)
Name string
}
func GetName(c int) (n string, err error) {
var m AModel
for i := 0; i < c; i++ {
n = "调用一个方法得到一个字符串"
err = db.Where("`name` = ?", n).Select("id").First(&m).Error
if m.ID > 0 {
continue
}
// 判断是否 `record not found`,取反
if !errors.Is(err, gorm.ErrRecordNotFound) {
continue
}
m.Name = n
err = db.Create(&m).Error
if err != nil {
continue
}
return
}
return
}
上面的 GetName
函数返回的 err,出现了少量的 record not found
? 但只有某一天出现,后面这个日志都未再现。对相应代码进行测试验证,未能复现。
3. 您期望得到的结果?
不会出现 record not found
?
4. 您实际得到的结果?
日志看确实是这里返回的出现 record not found
?
在
if !errors.Is(err, gorm.ErrRecordNotFound)
那里加个逻辑,把 sql log 记录下来。