不能。navicat.exe 无原生调度参数,不支持 --run-plan 或 --schedule,其计划任务依赖 GUI 会话,关掉客户端即停摆;真正可用的是 navicatcmd.exe,需绝对路径调用并指定 --profile 和 --task。
navicat.exe 能不能直接执行计划任务?
不能。windows 版 navicat.exe 主程序没有内置调度能力,也不存在 --run-plan、--schedule 这类原生参数——官方文档和 navicat.exe --help 都不支持。你看到的「计划任务」只是 ui 内部计时器,依赖完整桌面会话,关掉 navicat 或用户未登录,它就停摆。
常见错误现象:navicat.exe --run-plan "MyBackup" 无反应;navicat.exe --no-ui --run-plan "X" 报错 Plan not found 或静默退出;用 Windows 任务计划程序调用后日志里只有启动记录,没 SQL 执行痕迹。
真正可用的命令行入口是 navicatcmd.exe
navicatcmd.exe 是 Premium / Enterprise 版本专为无界面场景设计的独立工具,路径通常在 C:\Program Files\PremiumSoft\Navicat Premium 16\ 下。它不依赖 GUI 线程,能跳过凭据解密失败环节(但仍需 profile 可访问)。
- 必须用绝对路径调用,例如:
"C:\Program Files\PremiumSoft\Navicat Premium 16\navicatcmd.exe" --profile="ProdDB" --task="DailyExport" -
--profile值必须与 Navicat UI 中「连接」右键属性显示的 profile 名完全一致(区分大小写、空格、中文) -
--task是计划任务名,不是文件名或 ID;可先用navicatcmd.exe --list-tasks查看当前识别到的全部任务名 - Windows 计划任务中,“起始于(可选)”字段必须填
navicatcmd.exe所在目录,否则相对路径失效、找不到配置
为什么加了 --no-ui 还失败?
--no-ui 只对 navicat.exe 有效,且仅限 Windows;navicatcmd.exe 本身就不弹窗,加了反而报错。如果你在用 navicat.exe 并坚持走这条路:
-
--no-ui必须紧跟在navicat.exe后面,顺序错(如navicat.exe --run-plan "X" --no-ui)即失效 - 必须配合
--profile和--run-plan,三者缺一不可;--run-plan名称要复制粘贴自 UI,不能手敲 - 日志是唯一判断依据:默认写入
%APPDATA%\PremiumSoft\Navicat\Logs\navicat.log,控制台不输出任何内容,exit code 永远是 0 - 若日志里出现
Authentication failed或Connection timeout,大概率是 profile 里用了 Windows 凭据加密密码,而计划任务运行账户(如 SYSTEM)无法解密
更稳的路:绕过 Navicat,直取 SQL + 原生命令
Navicat 计划任务本质是封装好的动作。与其卡在命令行参数上,不如提取它实际干的事:
- 右键计划 → 「编辑」→ 切换到「SQL」页签,复制完整语句(如
SELECT * FROM users WHERE created_at > NOW() - INTERVAL 1 DAY) - 若为备份任务,点开「高级」→ 记下
--where、--fields-terminated-by、--hex-blob等参数,对应补到mysqldump或psql命令里 - 用环境变量替代硬编码密码:
mysqldump -hhost-uuser-p"$MYSQL_PASS" --where="..." db table > backup.csv - 丢进 Windows 任务计划程序或 cron,用系统级调度跑,彻底脱离 Navicat 运行时依赖
真正难的不是写命令,而是 profile 密码绑定 Windows 登录态、计划任务运行在 session 0、日志不报错只静默跳过——这些坑比语法细节更消耗时间。











