Navicat 不支持定时自动执行结构同步,需借助系统级调度工具:Windows 用任务计划程序调用 Batch Job(.nbj 文件),Linux/macOS 暂无官方 CLI 支持 schema sync,仅能通过模拟 GUI 或改用原生工具链实现。
Navicat 本身不支持定时自动执行结构同步
navicat 没有内置的「定时任务调度器」,它的 结构同步 功能(schema sync)只能手动触发,或通过「批处理作业」(batch job)配合外部调度工具间接实现。想“定时执行”,必须借助操作系统级定时能力,比如 windows 的任务计划程序 或 linux 的 cron。
用 Batch Job + Windows 任务计划程序实现定时结构同步
这是最常见、实操性最强的方案,适用于 Windows 用户:
- 在 Navicat 中创建一个
批处理作业(File → New Batch Job),把你要做的结构同步操作拖进去(注意:必须是已保存的同步连接配置,不能是临时比较窗口) - 保存批处理作业为
.nbj文件(例如D:\navicat\sync_user_schema.nbj) - 用命令行调用 Navicat 主程序执行该作业:
"C:\Program Files\PremiumSoft\Navicat Premium 16\navicat.exe" -batchjob "D:\navicat\sync_user_schema.nbj"
注意路径含空格必须加双引号,且-batchjob参数区分大小写 - 在「任务计划程序」中新建基本任务,触发器设为每天/每小时,操作设为「启动程序」,程序为
navicat.exe,参数填-batchjob "路径" - 关键细节:任务需勾选「不管用户是否登录都要运行」+「使用最高权限运行」,否则后台执行时可能因缺少 GUI 上下文而失败或静默退出
Linux/macOS 下用 cron 调用 navicat-cli(仅限 Navicat Premium 16+)
Navicat 16 开始提供命令行工具 navicat-cli(macOS/Linux 版本需单独下载 CLI 包),但仅支持部分操作,结构同步 目前仍不可直接调用 —— 官方文档明确说明 navicat-cli 不支持 schema sync,只支持备份、还原、查询等基础动作。所以这条路目前走不通。
如果你非要在 Linux/macOS 实现,唯一可行路径是:用 expect 或 xdotool 模拟 GUI 操作(极不稳定,不推荐),或改用开源替代方案(如 mysqldiff + mysql 命令行 + cron 自行拼装同步逻辑)。
结构同步定时化的三个隐藏风险
即使成功调度,以下问题极易被忽略:
-
结构同步默认不自动执行 SQL —— 它只生成差异脚本,你必须在批处理作业里显式勾选「执行同步」,否则任务跑完什么都没发生 - 目标库若处于只读模式、或有活跃连接锁表,同步会失败,但 Navicat 批处理默认不记录详细日志,错误只会出现在界面弹窗或静默跳过
- 不同版本 Navicat 对
.nbj文件兼容性差,升级后旧作业可能无法加载,建议每次升级后重新导出并验证一次
真正稳定的结构同步自动化,往往绕不开数据库原生工具链。Navicat 的定时只是个“启动开关”,背后还得靠你对 MySQL/PostgreSQL 的 DDL 变更流程有足够把控。











