navicat 15 定时结构同步需先保存为profile并用navigator.exe配合系统计划调度实现;必须通过向导末页“save profile”生成.nsx文件,再以命令行调用navigator.exe执行,不可直接点击“运行”按钮,且须配置最高权限、禁用无登录运行、谨慎设置options选项。
navicat 15 没有内置定时结构同步功能,必须靠保存为 profile + 系统级任务调度来驱动;直接点“结构同步”向导里的“运行”按钮,只执行一次,不会自动重试或按计划触发。
必须先保存为 Profile 才能被计划调用
结构同步向导走完比对、看到部署脚本后,不能直接点“运行”。否则这个操作就结束了,后续无法被任何计划工具识别。
- 点击右上角
Save Profile(不是“保存配置文件”或“导出”),起名如prod_to_staging_schema_daily.nsx - 保存路径默认在
%APPDATA%\PremiumSoft\Navicat\Profiles\(Windows)或~/Library/Application Support/PremiumSoft/Navicat/Profiles/(macOS),但你不需要手动找——只要能在「自动运行」界面拖入该任务,就说明保存成功 - 常见失败现象:任务计划里始终为空,或双击 .nsx 文件提示 “Invalid profile file”——大概率是用了旧版向导(v14 或更早)生成的文件,v15 要求必须通过向导末页的
Save Profile按钮生成
Windows 下用 Task Scheduler 调用 navigator.exe
Navicat 15 安装后自带 navigator.exe,它是唯一支持命令行运行结构同步 Profile 的入口。GUI 里点“自动运行”只是个假象,背后仍是它在调用这个可执行文件。
- 测试命令行是否可用:
C:\Program Files\PremiumSoft\Navicat Premium 15\navigator.exe -sync "C:\path\to\prod_to_staging_schema_daily.nsx"(路径含空格必须加英文双引号) - 若报错
Failed to load connection,检查 Profile 中所有连接是否都取消了Save password,改用连接属性里填明文密码(仅限内网可信环境) - 把命令写进
.bat脚本,再用 Windows 任务计划程序创建任务;务必勾选“使用最高权限运行”,否则可能因 UAC 阻断连接数据库 - 不要勾选“不管用户是否登录都要运行”——
navigator.exe依赖当前用户的图形会话上下文,后台无桌面会话时会静默失败
结构同步 Profile 里 Options 设置直接影响脚本安全性
Profile 不只是记录连接信息,还固化了你在“选项”页勾选的所有开关。这些设置决定生成的 DDL 是不是真能跑通,尤其跨库或升级场景下极易翻车。
-
Drop objects not exist in source必须确认源库结构已冻结,否则计划任务某天自动删掉目标库一个关键索引,没人会提前知道 -
Compare auto-increment value建议取消——结构同步不该动运行时状态,否则目标表自增起点被重置,后续插入直接主键冲突 -
Compare collation若源库是utf8mb4_0900_as_cs、目标库是utf8mb4_general_ci,勾选此项会生成 ALTER TABLE … COLLATE 语句,MySQL 8.0+ 可能因排序规则不兼容报错 - 如果目标库是 PostgreSQL,而 Profile 里勾了
Compare comments,但目标版本
macOS/Linux 用户实际不可行,别浪费时间配 CLI
Navicat 15 for macOS/Linux 根本没有 navicat 或 navigator 命令行工具。官方文档里提到的 CLI 功能,是从 v16 开始才加入的。v15 用户在终端里敲 which navicat,结果一定是空的。
- 试图用 AppleScript 或 Automator 模拟 GUI 操作?不可靠——结构同步弹窗多、耗时长,脚本容易卡在“正在比对”或“部署中”状态
- 替代方案只有两个:
mysqldump --no-data+mysql手动比对 DDL 差异(适合 MySQL→MySQL),或用pg_dump -s+ diff + psql(适合 PostgreSQL 场景) - 若必须用 Navicat 的图形化比对能力,唯一可行路径是 Windows 虚拟机 + 任务计划,或迁移到 Navicat 16+
Profile 一旦保存,Options 和连接参数就固化了;下次想改比较模式或跳过某张表,必须重新走一遍向导、重新 Save Profile——没有“编辑已有 Profile”的入口,这是最容易被忽略的约束。











