Navicat定时任务无默认持久化执行历史,仅内存缓存“最近执行”状态,重启即清空;history.db损坏、Windows任务计划未启用历史记录、备份过程无校验日志,导致失败难追溯;真实结果须查验备份路径文件。
Navicat定时任务执行历史默认不持久保存
navicat 的定时任务(即“自动运行”或“计划任务”)本身不维护独立的、可回溯的执行历史日志。它不会像数据库服务端那样写入 task_log 表,也不会把每次成功/失败的备份动作自动存成文本或 sqlite 记录。你看到的“最近执行”状态,只是内存缓存,重启 navicat 或电脑后就清空。
history.db 文件损坏导致历史记录“消失”
如果你曾手动开启过“保存查询历史”或使用过 Query Analyzer,Navicat 会把部分元数据写入本地 SQLite 数据库 history.db(路径如 %AppData%\PremierSoft\Navicat Premium\profiles\default\history.db)。但该文件依赖 WAL 日志一致性 —— 若 Navicat 异常退出(崩溃、强制杀进程、断电),history.db 可能卡在未提交事务或 WAL 不匹配状态,重启后 SQLite 拒绝读取,表现为“记录全没了”,实际是文件被跳过加载。
- 不要直接删
history.db,先关掉所有 Navicat 进程,重命名该文件为history.db.bak再重启,Navicat 会新建一个空的 - 用
sqlite3 history.db "PRAGMA integrity_check;"可验证是否损坏;报ok才说明结构正常 - v16+ 版本中表名可能是
query_history或task_history,字段名也可能是query_text而非sql_text
Windows 任务计划程序未启用历史记录,根本看不到失败原因
Navicat 的“定时备份”本质是注册一个 Windows 任务计划(Task Scheduler),由系统触发 navicat.exe 启动并执行预设动作。但默认情况下,这个系统级任务**完全不记录执行日志** —— 即使失败,你也看不到 “Access is denied” 或 “The system cannot find the file specified” 这类关键错误。
- 必须手动开启:打开“任务计划程序” → 右键对应任务 → “属性” → “历史记录”选项卡 → 勾选“启用此任务的历史记录”
- 真正有用的日志不在 Navicat 界面里,而在 Windows 事件查看器:
应用程序和服务日志 → Microsoft → Windows → TaskScheduler → Operational - 常见静默失败原因:没填 Windows 登录密码、勾了“只在用户登录时运行”但电脑锁屏、账户权限不足(尤其 Microsoft 账户在计划任务中凭据链易断裂)
备份任务本身没生成日志文件,只靠 Navicat 界面状态判断不可靠
Navicat 不会为每个定时备份自动生成 backup_20260610.log 这类日志文件。所谓“执行成功”,仅指 Navicat 进程启动、连接上数据库、调用了一次 mysqldump 或内部备份逻辑 —— 但导出的 .sql 文件是否写满、是否被防病毒软件拦截、目标路径磁盘是否已满,它一概不校验也不记。
- 检查真实结果:去你设置的绝对备份路径(如
D:\NavicatBackups)下看最新生成的.sql或.psc文件大小和修改时间 - 如果文件为空(0 字节)或时间戳停滞,说明备份中途失败,但 Navicat 界面仍可能显示“已完成”
- 想留痕,得自己加一层:用批处理包装备份命令,开头加
echo [%date% %time%] Start backup >> D:\backup.log,结尾加echo [%date% %time%] Done >> D:\backup.log
Navicat 定时任务的历史不是“丢了”,而是压根没设计成可靠落盘机制 —— 它混合了内存缓存、SQLite 元数据、系统任务调度三层松散耦合的日志来源,任何一层出问题都会让你找不到那条“昨天凌晨2点到底有没有跑”。最稳的做法,永远是去备份路径看文件,而不是信界面右下角那个小绿点。


















