navicat cloud 不保存历史版本,误删的 .ndm 文件无法恢复,因其仅同步最新快照、无回收站或时间点恢复功能;恢复依赖本地备份、系统快照或 git 等外部手段。

Navicat Cloud 本身不保存模型文件的历史版本,也没有“回收站”或“时间点恢复”功能,误删的 .ndm 文件无法直接从 Navicat Cloud 恢复。
为什么在 Navicat Cloud 里找不到被删的模型?
Navicat Cloud 同步的是当前模型工作区的**最新快照**,不是 Git 式版本仓库。一旦你执行了“从项目中移除”或“删除模型”,该模型即从云端项目中彻底清除,且无操作日志回溯、无自动备份副本。
- “删除模型”操作 ≠ 删除本地
.ndm文件,但会同步移除云端关联项 - 活动日志(Activity Log)只记录“谁在何时移除了模型”,不保留被删内容
- Navicat Cloud 不缓存历史提交,也不提供类似
git revert的回滚能力
真正能救回来的三个来源
恢复依赖的是你或团队成员是否提前做了外部留存,而非 Navicat Cloud 自身能力:
-
.ndm文件本地备份:检查自己或队友电脑上是否还存有未上传前的旧版my_project.ndm—— 这是最常见有效路径 - 系统级备份工具:如 macOS Time Machine、Windows File History、或企业级 NAS 快照,若启用了对 Navicat 工作目录(如
~/Documents/Navicat/Models/)的定期归档,可从中提取 - Git 或其他 VCS 托管:如果团队把
.ndm当作二进制资产纳入 Git(需配置.gitattributes处理 diff),可用git checkout <commit> -- model.ndm</commit>恢复
同步模型到数据库前,务必先确认“删表”类操作是否已提交
很多人混淆“删模型里的表”和“删数据库里的表”。如果你只是在模型中删除了某个 users 表,但尚未执行 同步模型到数据库,那数据库数据仍是安全的;但如果已运行同步且勾选了 删除目标中不存在的对象,则真实表已被 DROP —— 此时恢复重点就变成 MySQL 的 binlog 或备份还原,和 Navicat Cloud 完全无关。
- 检查同步向导第 2 步“结构比对”页,看是否有
DROP TABLE条目高亮显示 - 生产环境强烈建议禁用同步中的自动执行,一律选“生成 SQL 脚本”,人工 review 后再执行
- PostgreSQL 用户注意:
ALTER TABLE ... DROP COLUMN若字段含数据,可能触发不可逆截断,Navicat 不做前置校验
最常被忽略的一点:Navicat Cloud 的“协同项目”本质是共享一个模型文件的**单版本引用指针**,它不解决版本控制问题。真要防误删,得靠本地文件管理习惯 + 外部备份机制,而不是指望云服务兜底。











