MySQL JSON字段默认值异常:_utf8mb4前缀问题咨询
MySQL JSON字段默认值显示_utf8mb4'{}'的问题说明与解决
关于_utf8mb4前缀的说明
_utf8mb4是MySQL的字符集引入前缀,用来显式指定字符串字面量的字符集。JSON类型在MySQL中强制使用utf8mb4字符集存储,所以当你设置默认值{}时,数据库会自动为这个字符串加上_utf8mb4前缀,明确它的字符集属性。这是8.0版本的正常行为,不会影响默认值的实际功能——字段的默认值依然是{},只是SHOW CREATE TABLE输出时会带上这个前缀。
如何让DDL显示不带前缀的默认值
虽然这个前缀不影响使用,但如果想要SHOW CREATE TABLE输出更简洁,可以尝试以下两种方式:
- 调整ALTER语句的写法,去掉默认值的括号:
ALTER TABLE demo MODIFY COLUMN settings JSON NOT NULL DEFAULT '{}';
- 确认数据库和表的默认字符集已经是utf8mb4(你的表已设置
CHARSET=utf8mb4),在字符集一致的情况下,部分场景下MySQL会省略前缀,但8.0.33版本中可能依然会显示,这属于显示层面的差异,无需过度在意。
相关文档说明
MySQL官方文档中,关于字符集引入前缀的内容在「字符串字面量」章节,关键词为「Character Set Introducers」,主要解释这类前缀的作用:强制指定字符串的字符集,避免与当前会话或表的默认字符集冲突。
内容的提问来源于stack exchange,提问作者bilogic
相关产品推荐
相关产品推荐

