diff --git a/dialects/dameng.go b/dialects/dameng.go index f8cc4696..fa168fbd 100644 --- a/dialects/dameng.go +++ b/dialects/dameng.go @@ -1145,7 +1145,13 @@ func (d *damengDriver) Scan(ctx *ScanContext, rows *core.Rows, types []*sql.Colu if replaced { switch t := scanResults[i].(type) { case *dmClobScanner: - if err := convert.Assign(vv[i], t.data, ctx.DBLocation, ctx.UserLocation); err != nil { + var d interface{} + if t.valid { + d = t.data + } else { + d = nil + } + if err := convert.Assign(vv[i], d, ctx.DBLocation, ctx.UserLocation); err != nil { return err } default: diff --git a/session.go b/session.go index 499b7df4..a96d2fc9 100644 --- a/session.go +++ b/session.go @@ -524,6 +524,9 @@ func (session *Session) convertBeanField(col *schemas.Column, fieldValue *reflec if !ok { return fmt.Errorf("cannot convert %#v as bytes", scanResult) } + if data == nil { + return nil + } return structConvert.FromDB(data) } }