Navicat 17的Connections.ncx文件因系统级加密密钥差异无法直接复制,必须通过导出/导入功能迁移,并确保主版本一致、处理BOM乱码、重配SSH路径与代理。
Connections.ncx 文件直接复制必然失败
navicat 17 的 connections.ncx 不是普通配置文件,它用本机密钥加密,windows 和 macos 的加密密钥完全不同。直接拷贝过去,navicat 启动时连连接列表都加载不出来,报错通常是 failed to load connection list 或界面空白——这不是文件损坏,是解密失败。
实操建议:
- 必须走 Navicat 内置流程:
文件 → 导出连接(选中全部),保存为.ncx文件;目标机上用文件 → 导入连接加载该文件 - 导出前务必勾选
Include password(v16+ 需设临时主密码,如temp123;导入时再输一次) - 别双击打开 .ncx 文件——Navicat 会当普通文本处理,不触发导入逻辑
版本不一致导致静默解析失败
v17.0 导出的 Connections.ncx 在 v17.2 上可能正常,但在 v16.x 或 v18.0 上大概率失效:连接名变成 Connection_1、SSL 设置丢失、双击无反应,控制台也不报错——这是 Navicat 主动限制跨主版本兼容性,不是 bug。
常见现象:
- 导入后连接列表存在,但测试连接失败或卡在 SSH 步骤
- 字段值显示为空,即使导出时勾了密码
- Options.xml 中的快捷键、主题等偏好项完全没生效
解决方法:迁移前确认两端 Navicat 主版本号一致(如都是 17.x),小版本差(17.1 → 17.3)通常安全;若源是 v16,目标装 v17,先在目标机降级到 v16.x 再导入,或用 v16 导出为 XML 格式过渡。
macOS 到 Windows 迁移时中文乱码
macOS 默认用 UTF-8 + BOM 保存 Connections.ncx,而 Windows 版 Navicat(尤其 ≤ v17.0.12)读取时会把 BOM 当作内容开头,导致中文连接名前多出  或直接截断成方块。
临时修复:
- 用 VS Code 打开导出的
.ncx文件 → 右下角点编码 →Save with Encoding → UTF-8 (no BOM) - 保存后再导入,中文名就能正常显示
一劳永逸:在 macOS 上用命令行导出(需 Navicat CLI,v17+ 内置):navicat --export-connections --format=ncx --output=/tmp/cons.ncx,CLI 默认输出无 BOM 的 UTF-8。
SSH 私钥路径和代理配置全失效
Connections.ncx 只存参数,不存运行时依赖。Mac 上的 /Users/xxx/.ssh/id_rsa 路径在 Windows 上肯定不存在,代理端口(Mac 常用 7890,Windows 可能是 10809)也得重填。
必须手动检查的三项:
- SSH 标签页里私钥路径是否指向新机器上的有效文件(注意路径分隔符:macOS/Linux 用
/,Windows 用\或/都可,但不能混用) - “保存密码”勾选框是否已启用(否则每次连接都要输 SSH 密码)
- HTTP/SOCKS 代理设置是否与当前网络环境匹配,尤其公司内网跳板机配置
容易被忽略的是:Navicat 的 “Test Connection” 只验证 SSH 隧道建立,不验证数据库登录;真正通不通,得点进连接后执行一条 SELECT 1。











