不能直接迁移.nmw文件,因其是二进制本地快照,需通过导出sql→新建工作区→反向工程导入on-prem server实现协作;迁入后须统一外键命名、补全注释、匹配mysql版本。
不能直接迁移 —— .nmw 文件不是协作单元,它是本地快照,强行“迁入”团队环境只会引发覆盖、版本错乱和 git 不可比对。
Navicat 16 的「团队协作版」实际指什么
Navicat 16 本身没有所谓“团队协作版”客户端;所谓协作能力来自两个独立组件:Navicat Cloud(公有云同步)或 Navicat On-Prem Server(私有部署服务)。它们不接管你的本地 .nmw 文件,而是提供一个远程对象仓库,用于同步连接、查询、代码段、模型工作区(注意:是“工作区”,不是单个 .nmw)等结构化对象。
关键区别在于:
-
.nmw是二进制、不可 diff、无版本语义的本地文件;而Navicat On-Prem Server中的“模型工作区”是以项目为单位托管的、支持多用户编辑与权限控制的对象集合 - 你无法把一个已存在的
.nmw“上传成协作模型”,只能把它作为初始输入,导入到 On-Prem Server 的某个项目中,再由多人基于该工作区开展后续协作
把已有 .nmw 转成可协作模型的实操路径
这不是文件拷贝,而是一次“重建+接入”过程。核心动作是:用 .nmw 初始化模型 → 导出为 SQL → 在 On-Prem Server 中新建模型工作区 → 从 SQL 正向工程导入。
- 在本地 Navicat Data Modeler 中打开你的
.nmw文件 - 执行
File → Export → SQL File (DDL only),导出时务必取消勾选Include DROP TABLE,并勾选Use IF NOT EXISTS(若目标库支持) - 登录
Navicat On-Prem ServerWeb 界面,创建新项目(如prod-model-v1),并邀请成员加入 - 在 Navicat 桌面端连接该 On-Prem Server 项目后,右键项目 →
New Model Workspace→ 命名后双击打开空白工作区 - 执行
Model → Reverse Engineer → From SQL File,选择刚才导出的.sql文件 —— 此时模型才真正进入协作上下文
迁入后必须立刻处理的三个兼容性陷阱
刚导入的模型在 On-Prem Server 中看似正常,但多人编辑前若不干预,很快会因默认行为冲突导致协作断裂:
-
外键约束名:Navicat 自动生成的CONSTRAINT `fk_XXX`每次导出都不同,Git 提交后全是噪音。应在模型中手动为每个 FK 设置固定名称,如fk_order_user_id -
注释丢失风险:Navicat 图形界面里填的字段说明(Comment)不会自动写入 SQL 注释。必须人工补上-- @desc 用户注册时间这类标记,并确保导出选项中启用Export comments as SQL comments -
MySQL 版本错配:Navicat 16 默认导出含IF NOT EXISTS,但若团队有 MySQL 5.7 环境,该语法不被识别。需统一导出设置 → 数据库类型选MySQL 5.7,否则协作成员反向工程失败
真正困难的不是“怎么传上去”,而是让所有人放弃双击 .nmw 修改的习惯,转而接受“模型即 SQL 文本 + Git 分支 + On-Prem Server 权限控制”的工作流。一旦有人绕过流程直接编辑本地 .nmw 再导出覆盖,整个协作链就断了。











