Navicat 17 打不开 Navicat 15 生成的 .nmf 文件,因其加载器仅识别 version="17.0" 及以上文件头,遇 "15.0" 直接静默跳过;虽可修改 navicat.ini 添加 AllowLegacyVersion=1 强制加载,但会丢失连接线样式、分组图层和非内置字体,且加密签名或旧版对象仍导致硬性失败;真正可靠的方式是导出 DDL SQL 并手动适配后由 Navicat 17 导入,确保结构 100% 精确还原。
Navicat 17 遇到 .nmf 文件时,若版本号为 version="15.0"(来自 Navicat 15 生成),会直接跳过解析、静默失败——连错误提示都不弹。你看到的“空白画布”或“ER 图区域无响应”,就是这个现象。这不是缓存或权限问题,而是加载器硬性过滤。
Unsupported model version: 15.0(需开启调试日志才能看到).nmf 是带渲染指令和图层元数据的二进制快照,不是纯结构定义,因此不具备跨版本可读性.nmf,但不能读 15.x 的;反过来,Navicat 15 也打不开 17.x 的 .nmf
修改 navicat.ini 添加 AllowLegacyVersion=1 可绕过版本检查,但只是“能打开”,不是“能用好”:
跨版本模型迁移唯一可靠的方式,是把结构抽离成纯文本 DDL,再由 Navicat 17 重新解析建模:
仅导出 DDL + 包含 BOM
– 把 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci 简化为 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
– 删除 JSON 字段上的 STORED GENERATED 子句(Navicat 15 不支持生成列)
DDL 导入看似简单,但几个隐性坑常导致模型“看起来正常、实际漏东西”:
外键 和 索引