首页
学习
活动
专区
圈层
工具
发布

MySQL JSON 类型 NOT NULL 竟无法约束 NULL 值插入?

又通过报错仔细分析对应字段 search_stats 的值,发现 JSON 字段类型回滚生成的 SQL 竟然是 '' (空)值!...但是通过查看线上表数据发现,在 有 JSON NOT NULL 类型的约束下,对应的回滚 SQL 主键值竟然是 NULL 值! 这和 binlog 里记录的 '' (空)值不一致。...正常写入 NULL 值,会触发约束报错,猜测可能是历史上有过 DDL 操作。 故障复现 将 SQL_MODE 设置为 '',退出重连。(PS:切记重连生效!)...值,而且还由 NULL 大写变成了小写。...再 UPDATE 修改 '' (空)值为 {},然后再修改为 JSON 字段。业务判断数据是否正确,INSERT ... SELECT ... 写入回原表。 这样就解决了。。。

53000
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL NULL值特性

    NULL是一种“没有类型”的值,通常表示“无值”,“未知值”,“缺失值”,“超界”,“不在其中”等,我们在日常运用中很容易和NULL字符串混淆,这里大致整理了下NULL值的一些特性,以便能够正确使用NULL...1,创建表时字段时若未添加默认值,则默认为NULL值 2,NULL值和NULL字符串的区别 1)NULL值不区分大小写,查询时都显示为大写NULL,而NULL字符串则显示为插入时候的大小写,查询的时候根据字符集是否区分大小写筛选...2)NULL字符串可以当作普通字符串进行处理,而NULL值的判断只有is null和 is not null,见第5点 3,插入数据时若不指定值,如果没其它默认值,会用默认值NULL 4,当插入大写...NULL字符时,就很难区别NULL是NULL值还是NULL字符串了,这时需要用到NULL值的判断,NULL值的判断只有is NULL和is not NULL 通过肉眼很难区别,这里通过NULL值的判断...,可以看到id2为NULL值的只有3行,非NULL值的有7行,而为NULL字符串的有4行 5,SQL里面对NULL值的处理函数有isnull(expr)(返回is NULL的逻辑判断结果)和ifnull

    3.5K10
    领券