Navicat 不支持外部链接文件或模型附件,ER 图数据内嵌于 .ncx/.xml 中;SSH/SSL 文件路径为绝对路径,跨平台迁移后需手动重设,XML 导出仅保留路径快照且不自动加载,exportConnections 输出 JSON 但密码为空、路径仍需人工适配。
Navicat 本身不支持外部链接文件或模型附件
navicat 没有「模型附件」「外部链接文件」这类概念。它不提供类似 power bi 的嵌入式资源管理,也不保存图片、sql 脚本文件、er 图导出物等作为“附件”绑定在连接上。所谓“模型”仅指 er diagram(实体关系图),其数据完全内嵌在 connections.ncx 或导出的 .xml 中,不引用任何外部路径。
SSH 私钥、SSL 证书等外部文件路径必须手动重设
Navicat 在连接配置中会记录 SSH 私钥、客户端 SSL 证书等文件的**绝对路径**,例如 /Users/alex/.ssh/id_rsa 或 C:\Users\Alex\.ssh\id_rsa。跨平台迁移后这些路径必然失效,Navicat 不会自动替换或提示缺失,而是静默跳过隧道/SSL 设置,导致连接失败。
- 导入
.ncx或.xml后,必须逐个打开连接 → 进入「SSH 隧道」或「SSL」页 → 点击「浏览」重新选择本地私钥/证书文件 - 不要依赖「相对路径」:Navicat 旧版(≤ v16)不解析
./keys/id_rsa;v17 虽支持部分相对路径,但行为不稳定,且不同系统对.的解析基准目录不一致(macOS 是用户主目录,Windows 可能是 Navicat 安装目录) - 推荐做法:把私钥统一存到一个易同步的位置(如 Dropbox/OneDrive 下的
navicat-keys/子目录),再在各设备上用绝对路径指向它
导出为 XML 时路径字段仍保留,但无实际作用
即使你用「右键连接 → 导出连接 → XML 格式」,生成的 XML 文件里仍会包含 <privatekeypath>/Users/alex/.ssh/id_rsa</privatekeypath> 这类字段。但它只是元数据快照,导入时 Navicat **不会尝试读取该路径下的文件**,也不会报错——它只在你真正点击「测试连接」或「打开连接」时才去加载。
- XML 中的路径字段对跨平台迁移毫无帮助,反而可能误导你认为“路径已带过去”
- 若用脚本批量处理 XML(比如用 Python 替换路径),要注意 Navicat 对 XML 标签顺序敏感:
<privatekeypath></privatekeypath>必须紧邻<sshenabled>true</sshenabled>,错位会导致整组连接无法加载 - UTF-8 BOM 是另一个隐形坑:macOS GUI 导出的 XML 带 BOM,Windows 版 Navicat ≤ v16.0.15 会把 BOM 当作乱码解析,导致连接名开头多出
字符
真需要路径可移植?只能靠 exportConnections 工具 + 手动补密码
exportConnections 是唯一能绕过加密、输出结构化配置的方案,但它输出的是 JSON,且密码字段恒为空("password": "")。路径字段也按当前系统格式输出,不自动转义或标准化。
- Windows 上运行:
"C:\Program Files\PremiumSoft\Navicat Premium 16\exportConnections.exe" -o cons.json - macOS 上运行:
/Applications/Navicat\ Premium.app/Contents/MacOS/exportConnections -o cons.json - JSON 中的
private_key_path字段值仍是绝对路径,需人工替换为各平台可用路径,或留空、后续在 UI 中设置 - 这个 JSON 可纳入 Git 管理,但每次部署到新环境后,仍需运行脚本注入密码(通过环境变量或密钥管理器),Navicat 本身不支持从 JSON 直接导入
最易被忽略的一点:Navicat 的「路径」问题从来不是文件位置问题,而是**权限+上下文+时机**问题——私钥文件是否可读、是否被终端代理拦截、是否在连接测试前已被其他进程锁住,这些比路径字符串本身更常导致失败。











