Navicat 不支持定时导出结构差异报告,需借助命令行工具 navicat.exe/--compare 配合系统定时任务实现;必须先保存为 .ncx 项目文件,且依赖已保存的连接配置;导出格式(HTML/TXT/SQL)固定不可定制,如需可解析或 CI 集成,建议改用 mysqldiff、pt-table-sync 或自定义脚本。
Navicat 本身不支持定时导出结构差异报告
navicat 没有内置的「定时任务」功能来自动执行结构对比并导出报告。它的 structure comparison 工具只能手动触发,导出动作(如保存为 html 或 txt)也必须人工点击。试图在「计划任务」里添加「结构对比」操作会失败——该选项根本不会出现在任务类型列表中。
真正可行的路径是:用 Navicat 的命令行工具 navicat.exe(Windows)或 navicat(macOS/Linux)调用预设的 .ncx 对比项目,配合系统级定时任务(如 Windows 任务计划程序、cron)驱动。
必须先保存为 .ncx 对比项目文件
手动做完一次结构对比后,点击工具栏的 Save As,保存为扩展名是 .ncx 的文件(例如 prod_vs_test.ncx)。这个文件里固化了源库、目标库连接信息、对比选项(是否忽略注释、排序规则、外键名大小写等),后续命令行才能复用。
常见踩坑点:
-
.ncx文件依赖本地已保存的连接配置——如果连接是“临时连接”或使用了未保存的密码,命令行运行时会报错Connection not found - 对比选项一旦保存进
.ncx就固定了,之后修改需重新手动对比再另存,不能单独编辑该文件 - Windows 下若 Navicat 安装在含空格路径(如
Program Files),命令行调用时必须用英文双引号包裹完整路径
用命令行 + 系统定时器实现自动导出
Navicat 提供 navicat.exe --compare 模式(Windows)或 navicat --compare(macOS/Linux),可静默执行 .ncx 并导出报告。关键参数如下:
-
--compare <path_to_ncx></path_to_ncx>:指定对比项目文件 -
--output <path></path>:指定导出路径,支持.html、.txt、.sql后缀 -
--no-gui:强制后台运行,不弹窗(必须加,否则定时任务会卡住)
示例(Windows):
navicat.exe --compare "C:\Projects\prod_vs_test.ncx" --output "D:\reports\diff_20241025.html" --no-gui
把这个命令加入 Windows 任务计划程序,设置每天 2:00 执行即可。注意「运行权限」要勾选“不管用户是否登录都要运行”,并填入有效账户密码(否则无法访问数据库连接)。
导出内容不可控,HTML 报告结构固定
Navicat 命令行导出的 HTML 报告样式和字段是硬编码的,无法通过参数定制:比如不能只导出新增表、不能过滤掉 comment 变更、不能合并重复的 ALTER TABLE 语句。它只是把 GUI 里看到的整个对比结果原样转成静态页面。
如果你需要可筛选、可解析、可集成进 CI 流程的结构差异,建议放弃 Navicat 命令行,改用开源 CLI 工具,比如:
-
mysqldiff(MySQL Utilities,已弃用但仍可用) -
pt-table-sync --dry-run(Percona Toolkit,侧重数据同步,但结构差异也能推断) - 基于
mysqldump --no-data+diff的自定义脚本(最灵活,可控性最强)
真正难的不是“怎么定时”,而是“导出的内容是否满足下游使用需求”——这点容易被忽略,直到你发现 HTML 报告没法被 Jenkins 解析或没人愿意每天点开看十几页表格。


















