Navicat 15 的数据生成功能仅作用于已连接并实际存在的数据库表,不支持直接从模型文件(.ndm)或未同步的草稿表触发;必须先通过正向工程将模型落地为真实表,再对这些表启用数据生成。

Navicat 15 的「数据生成」不是从模型文件直接触发的
很多人以为在 Navicat Data Modeler 里画完 ER 图就能一键生成测试数据,其实不能。Navicat 15 的数据生成功能只作用于**已连接并实际存在的数据库表**,不支持对纯模型文件(.ndm)或未同步到库的草稿表直接生成数据。
所以必须先完成两步:把模型正向工程导出为真实表 → 再对这些表启用数据生成。跳过这步,点「工具 → 数据生成」时会发现目标表根本不在列表里。
先用「正向工程」把模型落地成可操作的表
这是最容易卡住的环节。如果你在 Navicat Data Modeler 中设计好了模型,但没同步到数据库,数据生成器就“看不见”这些表。
- 右键模型 → 选择「正向工程」→ 指定已配置好的数据库连接(注意:别选错环境,测试库和生产库要严格区分)
- 勾选「创建新表」和「删除已存在同名表」(仅限测试库!)
- 务必确认「生成外键约束」被勾选——否则后续多表关联生成时会报
Cannot add or update a child row: a foreign key constraint fails - 执行后,刷新数据库连接,确保所有表出现在对象树中
用「数据生成」填充时要注意字段映射和外键顺序
Navicat 15 能自动识别外键关系,但前提是:被引用的父表必须**先于子表生成数据**。如果顺序反了,生成会中断并报错。
- 在「工具 → 数据生成」窗口中,左侧对象树按依赖顺序手动调整表顺序:先选
users,再选orders,最后选order_items - 对每个字段检查生成器是否合理:
email字段默认可能用「邮箱生成器」,但若你定义的是企业内网邮箱格式(如zhangsan@corp.local),就得切到「自定义文本」+ 正则表达式 -
created_at这类时间字段,别依赖默认的「当前时间」,应选「日期范围」并设为过去 3 个月,否则所有记录时间戳都一样,查不到时间维度效果 - 生成前点击「保存配置」,文件后缀是
.ngc,下次改参数只需加载它,不用重配
导出为 INSERT 脚本而不是直接写入数据库
很多团队需要把测试数据脚本纳入 Git 管控,或给 QA 同事复现环境。这时不能点「开始生成」直接入库,而要走导出路径。
- 在数据生成预览页,不点「开始」,而是点右下角「导出」按钮 → 选「SQL 文件」
- 关键设置三处必须核对:
插入语句格式选「单条 INSERT + VALUES」、导出 AUTO_INCREMENT 值勾上(保留主键)、导出字符集显式设为utf8mb4 - 导出的 SQL 文件里不含
CREATE TABLE,只含INSERT。如需建表语句,得单独用「数据库 → 导出SQL文件」功能 - 导出后建议用
mysql -u root -p 在干净库中验证一次,避免因换行符或 BLOB 字段截断导致执行失败
VARCHAR(10) 字段配了「长文本生成器」,导出的 INSERT 会超长失败,但错误提示藏在进度条下方小字里,一滑就错过。


















