Navicat 多窗口执行 SQL 卡住是 UI 状态错乱或缓存污染所致,非数据库问题;可尝试 Ctrl/Cmd+R 刷新、关闭窗口后重连、禁用自动补全、清理缓存并保留 connections.ncx 和 profiles/default,升级至 17.0.4+ 版本修复。
Navicat 多窗口执行 SQL 时卡住或无响应
不是连接断了,也不是语句写错了,而是点击「执行」后光标转圈、结果区空白、甚至整个窗口假死——这大概率是 navicat 的查询执行缓存或 ui 状态错乱导致的,和数据库本身无关。
常见触发场景:连续开 5 个以上查询窗口、频繁切换连接、执行过带大量 SELECT * 或未加 LIMIT 的慢查询后立即新开窗口。
- 别急着重启 Navicat,先试试强制刷新当前窗口:按
Ctrl + R(Windows)或Cmd + R(macOS),它会重置当前查询编辑器的执行上下文,比关掉重开快得多 - 如果多个窗口同时失效,说明主进程级缓存已污染,此时关闭所有查询窗口(但不要关连接标签页),再右键连接名 →
Disconnect→ 再Connect - 避免在单个连接下长期维持超多查询窗口;Navicat 对窗口状态的内存管理较弱,超过 8–10 个就容易出现 UI 线程阻塞
执行按钮灰色不可点 / 快捷键失灵
明明光标在编辑区、SQL 也写好了,但 Ctrl + Enter 没反应,工具栏上的「执行」按钮灰掉——这不是权限问题,而是 Navicat 把当前焦点误判为非 SQL 编辑区域。
典型诱因:从外部复制 SQL 进来时带了不可见字符(比如 Word 里的全角空格、Zero Width Space),或者上一次操作触发了某种隐藏的模态状态(如字段补全弹窗没关干净)。
- 把光标移到编辑区最开头,按
←键缓慢移动,看是否在某处“卡住”不动——那很可能就是不可见字符位置,删掉再重输分号结尾 - 临时禁用自动补全:菜单 →
Tools→Options→Code Completion→ 取消勾选Enable code completion,能大幅降低这类焦点错乱概率 - 别用鼠标双击选中整段 SQL 后执行;Navicat 在部分版本里对双击选中的文本范围识别异常,改用三击或
Ctrl + A
重置 Navicat 配置前必须备份什么
重置不是删掉整个配置目录就完事;Navicat 的「用户设置」和「连接信息」是分开存的,乱删会导致密码丢失、SSH 隧道配置清空、甚至许可证绑定失效。
真正要保留的关键路径只有两个:
-
%APPDATA%\PremierSoft\Navicat\(Windows)或~/Library/Application Support/PremierSoft/Navicat/(macOS)下的connections.ncx文件 —— 这是所有连接配置(含加密密码) -
profiles子目录下的default文件夹 —— 保存了字体、主题、快捷键等 UI 设置,删了就得重新调 - 其他如
cache、logs、temp可直接删;重置后首次启动会重建,不会影响已有连接
清理缓存后仍反复出问题
如果做完上述操作,隔几小时又回到「多窗口执行失效」的状态,基本可以确定是 Navicat 版本自身缺陷,尤其是 16.0.x 到 16.2.x 之间多个小版本存在 SQLite 缓存锁竞争 bug,和 macOS Monterey+ 或 Windows 11 的线程调度交互异常。
这不是你操作的问题,而是软件没处理好并发查询窗口的元数据刷新时机。
- 升级到
Navicat 17或更高版本(确认发布日期在 2023 年 10 月之后),这个 bug 已被标记为Fixed in 17.0.4 - 暂时无法升级?那就固定用「单连接单窗口」模式:每个数据库连接只开一个查询窗口,用
Ctrl + Tab切换标签页,别堆叠窗口 - 别信网上那些教你在注册表里改
MaxQueryWindows的方案——Navicat 根本没有这个配置项,纯属误导
多窗口执行的本质,是 Navicat 在前端模拟多个独立会话,但它没做真正的会话隔离。只要窗口数一多,UI 层和后台执行队列之间的状态同步就容易掉帧。这点在官方文档里不会写,但日志里能看到大量 UI thread blocked waiting for query result 类似提示。

















