Navicat 15 连接 MySQL 看不到 JSON 字段类型,首要原因是 MySQL 版本低于 5.7(如 5.6 或更低),因 JSON 是 MySQL 原生类型,Navicat 仅根据服务端元数据动态显示选项;执行 SELECT VERSION() 验证,返回值须 ≥5.7.0;若版本达标但仍未显示,则需确认使用 Navicat Premium v15+(Standard/Essentials 不支持)、连接权限正常、且非 SQL Server/Oracle/SQLite 等不支持 JSON 的数据库。
Navicat 15 连接 MySQL 却看不到 JSON 字段类型选项?先查数据库版本
不是 navicat 15 有问题,而是你连的 mysql 版本低于 5.7 —— json 类型是 mysql 原生支持的列类型,navicat 只是客户端,它不会“凭空添加”这个选项。如果下拉菜单里没有 json,大概率是服务端不支持。
立刻验证:在 Navicat 查询窗口执行 SELECT VERSION();。返回值必须是 5.7.0 或更高(如 8.0.33);若为 5.6.43 或更低,JSON 类型根本不存在,Navicat 自动隐藏该选项。
- 连接的是 MariaDB?MariaDB 直到 10.2.7 才部分支持 JSON 函数,但原生
JSON列类型仍不被 Navicat 识别 - 用的是 SQL Server / Oracle / SQLite?这些数据库压根没
JSON列类型,Navicat 不会列出 - 查询
VERSION()报错或返回空?可能是权限不足(缺少SELECT权限),或 Navicat 未正确初始化连接上下文
字段已存在 JSON 类型,但 Navicat 表设计界面不显示结构?升级或换 Premium 版
即使 MySQL 是 5.7+,旧版 Navicat(比如 v12 或 v14)也只会把 JSON 字段当 TEXT 渲染,双击单元格不会弹出树形编辑器——这不是 bug,是功能缺失。
Navicat Premium v15+ 是首个稳定支持 JSON 视图的版本(v15.0.28 起完善)。如果你用的是 Navicat Standard 或 Essentials,无论版本多新,都不会出现 JSON 编辑界面。
- 检查方法:右键表 →「对象信息」→「列」标签页,看字段类型是否显示为
json(小写)。若显示为text或空白,说明客户端未识别 - 确认方式:执行
SHOW COLUMNS FROM users LIKE 'data';,看Type列是否返回json - v15.1 之后修复了 MySQL 8.0+ 下 JSON 字段元数据读取异常问题,低于此版本可能显示为
NULL或报错
想改已有字段为 JSON 类型?别在可视化界面点来点去,必须写 ALTER TABLE
Navicat 的「设计表」界面只允许修改长度、默认值、是否为空等基础属性,对类型转换(如 TEXT → JSON)完全无响应。点保存也不会生效,更不会报错——它直接忽略类型变更。
真正操作只能靠 SQL:
ALTER TABLE users MODIFY COLUMN data JSON;
- 用
MODIFY COLUMN比CHANGE COLUMN更安全,后者需重复写字段名和类型,一漏就语法错误 - 原字段含数据时,MySQL 5.7+ 通常能隐式转换,但若该字段有索引、外键或触发器,需先
DROP再ADD - 执行前务必备份:
CREATE TABLE users_bak AS SELECT * FROM users; - 注意:MySQL 8.0.13+ 才支持
DEFAULT '{}'::json,旧版设默认值会报错
双击 JSON 字段没反应?不是卡了,是没进编辑模式
Navicat Premium v15+ 的 JSON 编辑器需要显式触发。双击后光标没变、没弹窗,大概率是你没进入编辑状态。
- 试试右键单元格 →「编辑值」,或选中单元格后按空格键
- 内容超长(> 1MB)时,Navicat 会静默降级为纯文本模式,此时可先用
JSON_EXTRACT(data, '$.name')截取关键路径再编辑 - Mac 用户尤其注意:Cmd+A 全选结果行后,右键要选「Export All Rows as JSON」,而不是「Export Selected Rows」——后者未选中即导出空数组
[] - 导出 JSON 时记得勾选「使用双引号包裹字段名」,否则生成
{id:1}这种非法格式,下游解析直接失败
Navicat 对 JSON 的支持始终受限于三重边界:数据库原生能力、客户端版本功能、连接层字符集与协议兼容性。最容易被忽略的是——它从不“自动适配”,所有类型识别、编辑、导入导出行为,都严格依赖服务端返回的元数据。一旦 SHOW COLUMNS 返回不了 json,后续所有 JSON 相关交互都会失效。


















