diff --git a/callbacks/create.go b/callbacks/create.go index e5929adbd4..499f8e76d5 100644 --- a/callbacks/create.go +++ b/callbacks/create.go @@ -93,6 +93,9 @@ func Create(config *Config) func(db *gorm.DB) { ) if db.AddError(err) == nil { defer func() { + if !rows.Next() { + db.AddError(rows.Err()) + } db.AddError(rows.Close()) }() gorm.Scan(rows, db, mode) diff --git a/callbacks/delete.go b/callbacks/delete.go index 07ed6feef6..21270569d8 100644 --- a/callbacks/delete.go +++ b/callbacks/delete.go @@ -176,6 +176,9 @@ func Delete(config *Config) func(db *gorm.DB) { if db.Statement.Result != nil { db.Statement.Result.RowsAffected = db.RowsAffected } + if !rows.Next() { + db.AddError(rows.Err()) + } db.AddError(rows.Close()) } } diff --git a/callbacks/query.go b/callbacks/query.go index 548bf70925..d92311b6dd 100644 --- a/callbacks/query.go +++ b/callbacks/query.go @@ -22,6 +22,9 @@ func Query(db *gorm.DB) { return } defer func() { + if !rows.Next() { + db.AddError(rows.Err()) + } db.AddError(rows.Close()) }() gorm.Scan(rows, db, 0) diff --git a/callbacks/update.go b/callbacks/update.go index 8e2782e164..2861d2cda0 100644 --- a/callbacks/update.go +++ b/callbacks/update.go @@ -91,6 +91,9 @@ func Update(config *Config) func(db *gorm.DB) { db.Statement.Dest = db.Statement.ReflectValue.Addr().Interface() gorm.Scan(rows, db, mode) db.Statement.Dest = dest + if !rows.Next() { + db.AddError(rows.Err()) + } db.AddError(rows.Close()) if db.Statement.Result != nil { diff --git a/scan.go b/scan.go index 9a99d0244f..ff249f1db5 100644 --- a/scan.go +++ b/scan.go @@ -359,10 +359,6 @@ func Scan(rows Rows, db *DB, mode ScanMode) { } } - if err := rows.Err(); err != nil && err != db.Error { - db.AddError(err) - } - if db.RowsAffected == 0 && db.Statement.RaiseErrorOnNotFound && db.Error == nil { db.AddError(ErrRecordNotFound) }