navicat命令行工具本身不支持跨服务器迁移自动化任务,仅能触发本地已配置的作业(如.ngq文件),不携带任务逻辑、调度策略或凭证;迁移需手动重建作业文件、连接配置和系统调度器,并验证版本、客户端库、字符集及外部命令兼容性。

Navicat 命令行工具本身不支持跨服务器迁移自动化任务
Navicat 的命令行能力(navicat.exe 或 navicat)仅用于触发本地已配置好的作业(如 .ngq 文件),它不保存任务逻辑、调度策略或连接凭证到可移植的配置中。所谓“迁移自动化任务”,本质是迁移「作业定义 + 连接配置 + 执行环境」三者,而命令行接口只是调用入口,不是载体。
必须手动重建的三个核心组件
在新服务器上让原自动化任务跑起来,需分别处理以下不可自动同步的部分:
-
批处理作业文件(
.ngq):导出时需勾选「包含连接信息」,但密码仍不会写入(v16+ 默认加密绑定源机);导入后必须逐个编辑连接并重输密码 -
数据库连接配置(
.ncx):直接复制connections.ncx会失败;必须用「文件 → 导入连接」,且 SSH 私钥路径、SSL 证书路径需手动修正为新服务器上的绝对路径 -
系统级调度器配置:Windows 计划任务或 Linux
cron条目不随 Navicat 迁移;需在新服务器上重新注册,注意路径使用完整路径(例如"C:\Program Files\PremiumSoft\Navicat Premium 16\navicat.exe" -runjob "D:\jobs\backup.ngq")
执行前必验的四个兼容性断点
跳过验证极易导致任务静默失败:
-
navicat --version输出版本号需与原作业创建时的主版本一致(如 v16.2 作业不能在 v17.0 下运行,会报Invalid job file format) - 目标服务器上 MySQL/PostgreSQL 客户端库版本需兼容;Navicat v16+ 内置 libmysqlclient.so.21,若目标系统只有 .so.20,启动时会提示
libmysqlclient.so.21: cannot open shared object file - 作业中若含「数据同步」操作,目标库必须已存在同名数据库,且字符集需显式设为
utf8mb4;否则中文字段同步后变??? - 若作业调用了外部脚本(如
mysqldump或psql),这些命令必须在新服务器$PATH中可达,且权限足够执行
最简可行迁移流程(无 GUI 干预)
适用于批量部署场景,避免人工点击:
- 在原机器上导出:
File → Export Connections → 选中所有 → 勾选「Export password」→ 保存为 <code>conn.ncx - 用 Navicat CLI 导出作业:
navicat -exportjob "My Backup" -output "backup.ngq"(注意:仅 v16.2+ 支持该参数) - 将
conn.ncx、backup.ngq、以及作业依赖的脚本/证书全部打包传到新服务器 - 在新服务器安装**完全相同版本**的 Navicat(如 v16.2.15),然后执行:
navicat -importconnections conn.ncx && navicat -runjob backup.ngq
真正难的从来不是“怎么迁”,而是“哪些东西你以为它能迁,其实根本没动”。比如时间戳字段是否被作业逻辑依赖、SSH 连接是否启用了密钥代理、甚至系统时区是否和原服务器一致——这些细节不校验,任务可能每天凌晨都执行了,但实际什么都没同步过去。











