Navicat正向工程不可用需依次确认:模型已保存为.nmmp文件;目标数据库连接已启用且DBMS类型严格匹配;取消勾选“Preview SQL only”;字段类型须在Properties中精确设置。
Navicat 里“正向工程”按钮点不动?先确认模型是否已保存为 .nmmp
navicat 的正向工程(forward engineering)不是从画布直接建表,它只认已保存的模型文件。如果模型刚新建、还没存盘,tools → forward engineering 菜单项是灰色不可用的——这不是权限或版本问题,就是文件状态不对。
实操建议:
- 务必先执行
File → Save As,保存为.nmmp文件(Navicat Model Project),路径尽量不含中文或空格 - 若模型是从旧版 Navicat 导入的
.nmp,需先另存为.nmmp才能启用正向工程 - 保存后刷新菜单,
Forward Engineering选项才会激活
生成 SQL 时提示 “No connection selected” 或连接列表为空
正向工程必须绑定一个真实数据库连接,但 Navicat 不会自动复用你当前打开的连接,也不读取已配置的连接列表——它只显示“当前工作区下已启用且兼容模型类型”的连接。
常见错误现象:No connection selected 弹窗反复出现,或者下拉框里什么也不显示。
实操建议:
- 检查模型右上角的
DBMS类型(如 MySQL 8.0、PostgreSQL 14),必须与目标连接的数据库类型完全一致;MySQL 5.7 模型不能选 MySQL 8.0 连接 - 进入
Connection → Manage Connections,确认对应 DBMS 的连接已勾选Enable,且测试连接成功 - 若用的是 Navicat Premium,注意区分“MySQL 连接”和“MySQLi 连接”,模型用的是前者,后者不识别
执行正向工程后表没建成功,但日志显示 “SQL executed successfully”
这是最隐蔽的坑:Navicat 默认勾选 Preview SQL only(仅预览 SQL),它根本不会真正发命令到数据库,只是把建表语句吐在日志窗口里。用户看到“executed successfully”,其实是 Navicat 自己执行预览动作成功了,不是数据库建表成功。
实操建议:
- 在正向工程向导第 2 步(
Options页面),**取消勾选Preview SQL only** ——这是默认开启的,90% 的失败源于此 - 勾选
Execute the generated SQL statements,并确保下方Stop on error按需开启(避免部分失败导致脏数据) - 若模型含外键或依赖顺序,Navicat 默认按字母序建表,可能报
Unknown table 'xxx'错误;此时需手动调整模型中表的创建顺序(右键表 →Move Up/Down),或分批导出
字段类型映射错乱,比如 INT(11) 变成 TINYINT 或 VARCHAR(255) 被截断
Navicat 的类型映射规则硬编码在模型设置里,不是按数据库实际版本动态适配的。例如 MySQL 模型默认把“长度 11”理解为 TINYINT,而不是 INT;又比如对 TEXT 字段长度限制不敏感,导出时可能被强制转成 VARCHAR(255)。
实操建议:
- 建模时别依赖图形界面里的“Length”输入框直填数字,而是右键字段 →
Properties→ 在Data Type下拉中选准完整类型(如INT而非TINYINT) - 对大文本字段,显式设为
MEDIUMTEXT或LONGTEXT,避免 Navicat 自动降级 - 导出前点开
Advanced Options,检查Use standard SQL data types是否关闭——开启后会弱化数据库特有类型,反而更易出错
正向工程不是一键傻瓜操作,它卡点分散在模型格式、连接状态、执行开关、类型映射四个层面。每个环节都得手动确认,漏掉任意一个,都会表现为“看起来走完了流程,但数据库没变”。尤其 Preview SQL only 那个勾选框,藏得深,害人多。










