Navicat 17 找不到旧连接是因为启用 App Sandbox 后仅读取沙盒路径 ~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Support/,而 v16 的连接数据存于 ~/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings/MySQL/0/0/ 等非沙盒路径,两者物理隔离;v17 不自动迁移、不兼容 v16 加密密钥,且 conn.plist/pref.plist 不存储连接数据,真正存储连接的是按数据库类型分层的 Settings/MySQL/0/0/<连接名> 等二进制目录;手动恢复需先启动 v17 初始化沙盒路径,再复制对应类型连接子目录并修正权限,否则静默失败。
navicat 16 升级到 17 后连接丢失,不是数据被删了,而是新版完全不读旧路径——~/library/application support/ 下的配置对 navicat 17 来说等于不存在。
为什么 Navicat 17 找不到旧连接?
macOS 版本强制启用 App Sandbox 后,Navicat 17 只认沙盒路径:~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Support/。而 Navicat 16 的连接数据全在 ~/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings/0/0/,两者物理隔离,系统不迁移、Navicat 也不自动识别。
常见错误现象包括:启动后连接列表为空、新建连接能存但旧连接完全不出现、导出连接时提示“无连接可导出”。
- 即使你复制了整个
Settings文件夹,如果目标目录没初始化(比如从未启动过Navicat 17),cp会静默失败 -
conn.plist和pref.plist在 v17 中已非主存储格式;真正存连接的是Settings/MySQL/0/0/<连接名>或Settings/PostgreSQL/0/0/<连接名>下的二进制文件 - v16 的加密密钥与 v17 不完全兼容,直接覆盖
Settings/0/0可能导致连接名显示但密码解密失败(表现为测试连接时提示密码错误)
手动恢复连接的实操步骤
别直接拖文件夹进去,顺序错了就白忙。必须按以下顺序操作:
- 先启动一次
Navicat 17,随便建一个新连接再退出——这会触发沙盒目录初始化,生成~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings/及其子目录 - 关闭
Navicat 17,确保进程完全退出(检查 Activity Monitor 里有没有NavicatPremium进程) - 用
cp -R把~/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings/MySQL/0/0/(或PostgreSQL等对应类型)下的每个连接子目录,逐个复制到~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Support/PremiumSoft CyberTech/Navicat CC/Common/Settings/MySQL/0/0/ - 执行
chmod -R 755 ~/Library/Containers/com.navicat.NavicatPremium/Data/Library/Application Support/,否则 Navicat 17 可能因权限拒绝读取 - 重启
Navicat 17,连接应全部出现;若个别连接测试失败,单独编辑该连接并重输密码(v17 会用新密钥重新加密)
conn.plist 和 pref.plist 到底要不要复制?
不用。这两个文件在 Navicat 17 中仅保存界面偏好和全局设置(如字体大小、主题),不存连接逻辑。强行覆盖反而可能重置你的 UI 布局或快捷键配置。
真正决定连接是否可见的是 Settings/MySQL/0/0/<连接名> 目录是否存在且可读。每个连接是一个独立目录,含 connection.ncx(元数据)和 password.dat(加密密码)等文件。
- 如果你只复制了
Settings/0/0而不是按数据库类型分层的路径,Navicat 17 会忽略它 - Mac 上没有注册表,
defaults write对连接恢复完全无效 - 第三方“一键迁移”工具大多只处理
conn.plist,对 v17 失效,慎用
最易被忽略的点是:复制前没启动过 v17 导致目标路径不存在,或者复制后没改权限。这两个动作缺一不可,跳过任何一个,连接都不会回来。


















