最稳妥的测试库搭建方式是直接复制生产库结构并清洗数据。navicat 16 的“数据传输”工具可导出纯ddl脚本(不含业务数据),需取消勾选“创建记录”,手动筛选对象,同步时禁用删除操作,并确保测试库字符集与权限配置安全。
直接复制生产库结构 + 清洗数据,是最稳妥的测试库搭建方式。navicat 16 提供多种路径,但关键在于「不带真实业务数据」——否则测试环境就变成泄露风险源。
用“数据传输”工具只导出结构
这是最常用、最可控的方法,适合 MySQL/PostgreSQL/MariaDB 等主流关系型数据库。
-
工具 > 数据传输启动向导,源选生产库连接,目标选“文件”并指定.sql路径(如/backup/classicmodels_struct.sql) - 点击“选项” → 在“记录”区域取消勾选
创建记录,确保只生成CREATE TABLE、CREATE INDEX等 DDL - 在“数据库对象”页只勾选需要的表、视图、函数;若要排除某些敏感表(如
user_logs),手动取消即可 - 执行后生成纯结构脚本,后续可直接在测试库中执行,或配合
mysql -u root -p classicmodels_test
用“备份”功能导出结构(不推荐用于大库)
Navicat 的常规备份默认含数据,但可通过设置绕过——仅适用于小规模库或快速验证场景。
- 右键生产库 →
备份→ 在“常规”页选择备份格式为SQL - 切换到“高级”页,取消勾选
导出数据和导出触发器(部分版本叫“导出表数据”) - 注意:此方式可能仍包含
INSERT语句(尤其当表有自增主键且未显式禁用时),务必打开生成的.sql文件确认无INSERT INTO行 - 若发现残留数据语句,退回用“数据传输”工具更可靠
用模型同步重建结构(适合已有 Data Modeler)
如果你的团队维护了 ER 模型(.ndm 文件),这是最规范、可版本化的做法。
- 右键生产库 →
逆向工程到模型(生成或更新模型) - 新建测试库
classicmodels_test后,在模型工具中打开该模型 →文件 > 同步到数据库 - 目标选
classicmodels_test,点击比较→ Navicat 会列出所有缺失的表/索引/约束 - 勾选“仅创建不存在的对象”,取消勾选“删除目标中多余对象”,避免误删测试库已有内容
- 同步前务必检查 SQL 预览,确认不含
TRUNCATE或DROP TABLE(除非你明确要清空重来)
真正容易被忽略的是权限和字符集。生产库用 utf8mb4_unicode_ci,测试库建库时如果沿用默认 latin1,后续插入 emoji 或中文就会报错;另外,测试库账号最好只赋予 SELECT, INSERT, UPDATE,禁用 DROP 和 ALTER 权限——毕竟测试代码跑崩了,不该让表结构也跟着一起消失。











