From 7ec9d5c0a2056ef544e65ff00e1c8a70de1732ea Mon Sep 17 00:00:00 2001 From: donghao Date: Sun, 27 Mar 2022 18:38:42 +0800 Subject: [PATCH] =?UTF-8?q?MySQL=20=E5=88=97=E5=B1=9E=E6=80=A7=E4=B8=BA=20?= =?UTF-8?q?JSON=20=E6=97=B6=EF=BC=8C=E8=8B=A5=E6=AD=A4=E5=88=97=E6=9C=AA?= =?UTF-8?q?=E8=AE=BE=E5=80=BC=EF=BC=8C=E5=88=99=E8=B7=B3=E8=BF=87=E6=8F=92?= =?UTF-8?q?=E5=85=A5=EF=BC=8C=E9=81=BF=E5=85=8D=E5=BC=95=E8=B5=B7=E9=94=99?= =?UTF-8?q?=E8=AF=AF=EF=BC=9AInvalid=20JSON=20text:=20"The=20document=20is?= =?UTF-8?q?=20empty."=20at=20position=200=20in=20value?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dialects/mysql.go | 1 + session_insert.go | 4 ++++ 2 files changed, 5 insertions(+) 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) {