Navicat 结构对比HTML报告不保存历史记录,仅临时存在于内存中,关闭即丢失;必须手动“Save Report As…”并规范命名(如含环境、对象、日期)才能留存,否则无法追溯。
Navicat 生成的结构对比 HTML 报告默认不保存历史记录
navicat 的「结构对比」功能(structure compare)执行后会弹出 html 报告,但这个报告是临时生成的,关闭窗口即丢弃,navicat 本身不维护任何历史记录或变更日志存档。
这意味着你无法在软件界面里点某个菜单“查看上周的对比报告”——它压根没存。
- 报告仅存在于当前会话的内存中,刷新或关闭浏览器标签页就失效
-
Navicat不写入本地数据库、也不创建日志文件来记录比对动作 - 即使勾选了「自动保存到文件」,也只是把当次结果另存为一个
.html文件,不会归档、不会带时间戳、不会索引
想追踪变更,必须手动干预:用「保存为文件」+ 命名规范
唯一可靠的方式,是每次对比后主动点击 Save Report As...,并配合人工管理文件路径和命名。
否则过两天连自己上次比的是哪两个表都记不清。
- 建议路径统一,比如:
C:\navicat-reports\schema-diff\2024-06-15_prod_vs_dev_orders.html - 文件名务必包含:环境标识(
prod/dev)、对象类型(orders)、日期,避免用report1.html这类名字 - 不要依赖 Navicat 的「最近打开」列表——它只记最近几次文件路径,不区分内容,且容易被覆盖
替代方案:用命令行工具导出可审计的变更日志
如果需要真正可追踪、可版本控制的结构变更记录,Navicat 不是合适工具。应转向数据库原生命令或 CLI 工具。
立即学习“前端免费学习笔记(深入)”;
例如 MySQL 场景下,用 mysqldump --no-data 导出结构,再用 diff 对比:
mysqldump -h prod-db -u user -p --no-data mydb > prod_schema.sql mysqldump -h dev-db -u user -p --no-data mydb > dev_schema.sql diff -u prod_schema.sql dev_schema.sql > schema_diff_20240615.patch
-
diff输出是纯文本,可提交进 Git,能看清每一行增删 - 相比 HTML 报告,它没有视觉干扰,适合自动化和 CI/CD 集成
- 注意:
mysqldump默认按字母序输出表,但不同版本排序行为可能不一致,建议加--skip-opt --skip-extended-insert提高可比性
为什么 Navicat 不做历史记录?设计定位决定的
Navicat 是 GUI 管理工具,不是变更管理平台。它的 Structure Compare 定位是“快速验证差异”,不是“审计留痕”。
所以它不记录谁在什么时候比了什么、参数是否勾选了「忽略注释」或「忽略排序」——这些细节全靠你当时记得住。
- 如果你发现两次对比结果不一致,大概率是某次漏选了
Ignore Auto Increment或Ignore Default Value - HTML 报告里不显示这些比对选项配置,只显示结果,回溯困难
- 真要长期追踪,得自己建个简单表格,手填:日期 / 源库 / 目标库 / 忽略项 / 报告路径
说到底,Navicat 的 HTML 报告只是快照,不是日志。想查变更,别等它记,得你来记。











