diff --git a/dialects/mysql.go b/dialects/mysql.go index 1fad3fee..58499ea6 100644 --- a/dialects/mysql.go +++ b/dialects/mysql.go @@ -304,6 +304,7 @@ func (db *mysql) SQLType(c *schemas.Column) string { c.Length = 40 case schemas.Json: res = schemas.Text + c.IsJSON = true case schemas.UnsignedInt: res = schemas.Int isUnsigned = true diff --git a/session_insert.go b/session_insert.go index fc025613..30b897e5 100644 --- a/session_insert.go +++ b/session_insert.go @@ -501,6 +501,10 @@ func (session *Session) genInsertColumns(bean interface{}) ([]string, []interfac continue } + if col.IsJSON && fieldValue.String() == "" { + continue + } + // !evalphobia! set fieldValue as nil when column is nullable and zero-value if _, ok := getFlagForColumn(session.statement.NullableMap, col); ok { if col.Nullable && utils.IsValueZero(fieldValue) {