mysql json類型使用JSON_SET方法修改字段不生效的坑


mysql 5.7增加了json類型,非常的好用。相信大家都試用過的。

記錄碰到的一個坑。前提:在a 表中有個 sync字段,json類型,默認值是null.

在更新json內字段時使用到了如下的sql:

UPDATE `a` SET `sync` = JSON_SET(`sync`,'$.t',token,'$.s',secret) WHERE id = 1

在測試的時候發現,如果表中字段已經有值,則:


JSON_SET可以成功執行,值有變動時返回1,無變動時返回0.

但!!!在sync是null時,更新一直不生效。
故json類型字段,默認值不要設置為Null,可以給個空json串 '{}' 的默認值.

然后!!!mysql不支持給json類型的字段設置默認值。

所以,最終方案是在insert記錄的時候,json類型字段一定要給個初始值。可以是:'{}','[]',或其它不為空不為null的初始值。

以上,在mysql5.7,mysql8.0中均是如此。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM