Navicat 15 自动备份依赖Windows任务计划,需同时满足三项硬性条件:固定绝对路径备份目录、批处理中使用$(Date:...)时间变量命名、任务计划启用登录态并输入Windows密码,缺一不可。

Navicat 15 无法真正“后台运行”自动备份,所谓“凌晨自动备份”本质是 Windows 任务计划调用 navicat.exe 执行一次批处理作业——没配对三项硬性条件,任务必然静默失败,连日志都不留。
必须先固定绝对路径的备份根目录
Navicat 不会自动创建备份文件夹,也不会按当前工作目录解析相对路径。如果你在“编辑连接 → 高级 → 设置位置”里填了 ./backups 或空着,备份时会写入不可预测的位置(比如用户文档或临时目录),第二天找都找不到。
- 右键目标数据库连接 → “编辑连接” → 切换到“高级”选项卡
- 点击“设置位置”右侧的“浏览”,**必须选一个完整绝对路径**,例如:
D:\NavicatBackups\myapp - 这个路径将作为所有该连接下备份文件(
.sql和.psc)的父目录,不能含中文、空格或特殊符号 - 改完后重启 Navicat,否则新路径不生效
批处理作业里必须手动加时间变量命名
Navicat 默认生成的备份文件名是静态的,比如 myapp.sql。如果不改,每天凌晨跑一次就覆盖前一天的文件,等于白备。
- 顶部菜单 → “自动运行” → “新建批处理作业”
- 左侧选库,右侧双击对应备份任务(如
Backup myapp) - 别急着点“保存”,先点下方“编辑”按钮
- 在弹出窗口的“文件名”栏中,把原始名改成带时间戳的格式:
myapp_$(Date:yyyyMMdd_HHmmss).sql - 注意:
$(Date:...)是 Navicat 内置变量,只在批处理作业中有效;大小写和冒号不能错
Windows 任务计划必须填对密码且启用登录态运行
Navicat 自身没有服务进程,任务计划靠系统唤醒 navicat.exe 并传参执行。只要以下任一条件不满足,任务就卡死:不报错、不写日志、不生成文件。
- 选中刚保存的批处理作业 → 点工具栏“设置任务计划” → 切换到“触发器” → “新建”
- 设“开始时间”为明天凌晨 2:00(避开业务高峰),勾选“重复任务”,间隔设为“每1天”
- 关键一步:必须勾选“使用Windows任务计划程序”,点击“应用”后弹出的窗口里,**输入当前 Windows 用户的完整密码(不能为空)**
- 任务计划属性 → “常规”选项卡 → 勾选“只在用户登录时运行”(Navicat 图形界面操作依赖桌面会话)
- 如果账户是 PIN 登录或 Microsoft 账户,需确认 Windows 密码已设置(控制面板 → 用户账户 → 更改密码)
验证是否真成功,不能只看任务状态
任务计划显示“上次运行结果:0x0”不代表备份成功——它只表示 navicat.exe 启动并退出了,中间任何错误(权限不足、磁盘满、SQL 权限不够)都会被吞掉。
- 打开 Navicat → “工具” → “历史记录”,确保已启用(默认关闭);否则出错无迹可寻
- 首次配置后,手动右键该批处理作业 → “开始”,观察历史记录里是否有“备份完成”及具体耗时
- 去你设的绝对路径(如
D:\NavicatBackups\myapp)下检查文件是否生成、大小是否 >0KB - 用文本编辑器打开最新
.sql文件,确认开头有-- MySQL dump...和实际表结构,不是空文件或报错 HTML
最容易被忽略的是:任务计划依赖用户登录态,而很多服务器或笔记本默认锁屏后会断开桌面会话;一旦用户未主动登录、或仅远程桌面连接后断开,备份就会彻底失效——这不是 Navicat 的 bug,是 Windows 任务计划的设计限制。真要无人值守,得换 mysqldump + Windows 服务化脚本 或迁移到 Linux + cron。


















