Navicat 的分析任务日志需手动开启 debug 日志才能获取,路径为 %APPDATA%\PremierSoft\Navicat Premium\logs\(Windows)或 ~/Library/Application Support/PremierSoft/Navicat Premium/logs/(macOS),文件名如 navicat_debug_20241105.log;必须关闭 Navicat 后在 config.ini 的 [General] 段添加 DebugLog=1 和 LogLevel=3 才能捕获 SQL、连接及错误细节;日志中重点搜索 Connection timed out、Access denied、Query execution timeout、Schema mismatch 等关键词定位问题;界面提示简略且无上下文,无法替代日志排查。
Navicat 中哪里找分析任务的日志文件
navicat 本身不提供类似数据库服务器那样的结构化日志查询界面,所谓“分析任务执行日志”,实际是 navicat 后台运行时生成的本地调试日志,**默认不开启、不保留、不展示在 ui 中**。你点开「工具」→「选项」→「日志」看到的只是界面操作记录,和 sql 执行、数据同步、分析任务无关。
真正能反映分析任务(比如「数据同步」「结构比较」「数据对比」)是否成功、卡在哪一步的线索,只存在于 Navicat 的 debug 日志里,且必须提前开启才能捕获。
- 日志路径固定:
%APPDATA%\PremierSoft\Navicat Premium\logs\(Windows),~/Library/Application Support/PremierSoft/Navicat Premium/logs/(macOS) - 日志文件名形如:
navicat_debug_20241105.log,每天一个新文件 - 关键行为会打点:比如
Start Data Compare、Compare finished、Failed to connect to target
如何开启 Navicat 的 debug 日志(必须做)
不开日志,分析任务跑失败了你也只能靠猜——UI 上通常只显示「操作失败」四个字,连错误码都不给。debug 日志是唯一能定位到具体哪条 SQL 超时、哪个字段类型不兼容、SSH 隧道哪一步断开的地方。
- 关闭 Navicat(必须完全退出,右下角托盘图标也要右键退出)
- 编辑配置文件:
%APPDATA%\PremierSoft\Navicat Premium\config.ini - 在
[General]段落下添加两行:DebugLog=1LogLevel=3 - 重启 Navicat,执行一次分析任务,再去 logs 目录翻刚生成的
navicat_debug_*.log
注意:LogLevel=3 是关键,设成 1 或 2 基本看不到 SQL 和连接细节;设太高(如 5)会产生巨量无用日志,拖慢 Navicat。
日志里重点盯哪些关键词和错误模式
分析任务日志不是从头读,而是带着问题去查。常见失败场景对应的关键线索很集中:
- 连接中断类:
Connection timed out、Broken pipe、SSH handshake failed(尤其走 SSH 隧道时) - 权限或语法类:
Access denied for user、Unknown column 'xxx' in 'field list'、Cannot convert value from type xxx to xxx - 超时类:
Query execution timeout(注意看它前面那条 SQL 是什么)、Task cancelled due to timeout - 对比逻辑类:
Schema mismatch detected、Row count mismatch on table 'users'(说明两边数据量对不上,但未必是错)
别被大段二进制或 Base64 内容干扰——那些是图标、字体缓存,和任务执行无关。直接 Ctrl+F 搜上面这些词就行。
为什么不能依赖 Navicat 界面提示来排错
Navicat 的弹窗报错极度简略,比如「无法完成数据对比」,背后可能是网络抖动、目标库锁表、源表有 JSON 字段而目标是旧版 MySQL、甚至只是本地磁盘满了导致临时文件写入失败。这些信息 UI 绝对不显示。
- 界面错误码常是泛化的:
Error -2147467259这种 COM 错误,毫无业务含义 - 「详细信息」按钮点开往往空着,或只有一行堆栈(
at Navicat.Data.Compare.xxxx),没上下文 - 任务状态栏显示「已完成」≠ 数据一致,它只代表流程走完了,可能跳过了某些表(日志里会有
Skip table 'tmp_log' due to permission denied)
所以只要分析任务结果让你心里没底,第一反应不是重试,而是打开日志文件,搜 failed、error、warn——这三词覆盖 90% 的真实问题。











