Navicat 17 的「设计表」界面不提供 JSON 类型下拉选项,因其仅内置通用类型且不探测数据库原生支持;需先设为 TEXT,再通过 SQL 手动修改为 JSON/JSONB 并刷新。

Navicat 17 本身不提供 JSON 字段类型的可视化下拉选择框——你无法在「设计表」界面的“类型”列里直接点选 JSON,必须手动输入并确认数据库支持。
为什么「设计表」里找不到 JSON 类型选项
Navicat 的「设计表」界面只展示它内置类型列表(如 VARCHAR、INT),而 JSON 是 MySQL/PostgreSQL 的原生类型,并未被纳入该下拉菜单。即使你连的是 MySQL 8.0 或 PostgreSQL 15,字段类型栏仍默认显示为空白或回退为 TEXT。
常见错误现象:
– 双击类型单元格,弹出的下拉里没有 JSON;
– 手动输入 JSON 后保存,Navicat 提示 “Unknown data type” 或自动转成 LONGTEXT。
- 根本原因:Navicat 没有主动探测当前连接数据库的 JSON 支持能力,也不会动态加载服务端类型列表
- MySQL ≥ 5.7.8 和 PostgreSQL ≥ 9.4 才真正支持
JSON/JSONB,但 Navicat 不校验这个前提 - Navicat 17 的「设计表」仅做结构同步代理,不参与类型语义解析
正确配置 JSON 字段的三步实操
绕过界面限制,用组合操作强制生效:
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 先在「设计表」中把目标字段类型设为
TEXT(或其他占位类型),保存退出 - 右键表名 → 「对象信息」→ 切换到「SQL」标签页 → 手动改写
ALTER TABLE `t` MODIFY `data` JSON;(MySQL)或ALTER TABLE t ALTER COLUMN data TYPE JSONB USING data::jsonb;(PostgreSQL) - 执行后刷新表结构:右键表 → 「刷新」,再进「设计表」,此时字段类型会显示为
JSON(MySQL)或jsonb(PostgreSQL),且双击可触发树形编辑器
注意:PostgreSQL 推荐用 JSONB 而非 JSON,前者支持索引和更快查询,但 Navicat 界面不会提示这点。
字段类型写对了,但双击还是没反应?检查这四点
即使字段已为 JSON 类型,Navicat 17 的树形编辑器仍可能失效:
- 值为
NULL:MySQL 中JSON字段允许 NULL,但 Navicat v17.0.12 之前版本对 NULL 值不触发编辑器,需先填入合法 JSON 字符串(如{})再双击 - 内容超长(> 512KB):Navicat 静默降级为文本模式,不报错也不提示,可用
JSON_EXTRACT(`data`, '$.id')先验证子路径是否可读 - 字段被设为
GENERATED ALWAYS AS(生成列):Navicat 不支持编辑生成列的 JSON 值,即使类型是JSON - 连接使用了 SSH 隧道但密钥认证不稳定:树形视图依赖多次小包交互,网络抖动会导致初始化失败,表现为双击后空白或卡在加载图标
跨平台时 JSON 字段显示异常的隐藏原因
Windows 上正常显示的 JSON 树,在 macOS 或 Linux 下变成乱码或折叠失效,往往不是 Navicat 问题:
- macOS 上用 TextEdit 保存的 JSON 文件默认带 BOM,导入后 Navicat 解析失败,导致后续所有编辑行为异常
- Linux 下 GTK 主题字体缺失中文符号(如
▶折叠图标),树形节点显示为空白方块,需在系统级安装fonts-noto-cjk - 字段名为
data且表里同时存在DATA(大写)别名视图:Navicat 在元数据缓存中混淆大小写,导致类型识别错乱 - MySQL 服务端
character_set_client设为latin1:即使 Navicat 客户端设 UTF-8,插入含中文的 JSON 也会被截断,后续双击打开看到的是残缺结构
真正麻烦的从来不是输错一个 JSON,而是你改完类型、填好数据、双击打开,却在第三层嵌套节点里发现某个 key 名字少了个下划线——而 Navicat 的树形编辑器不支持正则批量重命名。

















