MySQL 8.0.28如何为JSON列设置默认DbNull值?
MySQL 8.0.28 JSON列设置默认值的正确方案
一、核心要求
MySQL 8.0.13及以后版本支持给JSON列设置默认值,但必须是合法的JSON字面量,不能用函数调用(比如JSON_OBJECT())直接作为默认值,也不能用非JSON格式的字符串。
二、正确SQL写法
新建表时设置
CREATE TABLE your_table ( id INT AUTO_INCREMENT PRIMARY KEY, json_column JSON DEFAULT '{}' -- 空JSON对象作为默认值 -- 也可以用 DEFAULT '[]' 设置空数组默认值 );
修改已有表的JSON列默认值
ALTER TABLE your_table MODIFY COLUMN json_column JSON DEFAULT '{}';
注意:引号内的内容必须是标准JSON格式,比如键名必须用双引号,示例:DEFAULT '{"key": "value"}'。
三、MySQL Workbench界面操作避坑
如果用Workbench可视化界面设置,容易踩两个坑:
- 直接输入
{}:Workbench会将其识别为普通字符串,导致MySQL报错,必须用引号包裹成'{}'。 - 界面自动转义引号:有时候Workbench会把你输入的
'{}'转成''{}'',引发语法错误。
解决办法:直接切换到Workbench的「SQL」标签页,手动执行上面的CREATE/ALTER语句,跳过界面自动生成代码的环节。
四、常见错误排查
错误提示:
Invalid default value for 'json_column'- 原因:默认值不是合法JSON字面量,比如用了
JSON_OBJECT()作为默认值,或者引号内的JSON格式错误。 - 修复:改用
'{}'/'[]'这类标准JSON字面量。
- 原因:默认值不是合法JSON字面量,比如用了
错误提示:SQL语法错误
- 原因:Workbench界面自动添加了多余的转义字符或引号。
- 修复:放弃界面操作,直接执行纯SQL语句。
内容的提问来源于stack exchange,提问作者Aԃιƚყα Gυɾαʋ
相关产品推荐
相关产品推荐

