Navicat 不支持跨平台自动同步查询历史记录,历史日志仅本地存储于 SQLite 数据库中,不上传云端、不加密、无账号体系;手动迁移 query 目录易因结构差异或连接 ID 不匹配而失败;可靠方式是逐条导出 SQL 文件并手动导入。
navicat 本身不支持跨平台自动同步查询历史记录,所谓“同步”其实是手动搬运本地文件,不是点击一下就自动云同步。你换电脑、重装系统或从 windows 切到 mac,ctrl+h 里看到的历史日志会清空——因为它只存在本地内存和临时缓存中,不上传、不加密、不备份。
Navicat 历史日志根本不在云端,只存本地
Navicat 的历史日志(Ctrl+H)是纯客户端行为,运行时写入内存,关闭软件后部分持久化到本地配置目录,但不跨设备、不加密传输、无服务器端存储。它不像浏览器历史那样有账号体系,也没有后台服务帮你拉取旧记录。
- Windows 路径示例:
C:\Users\[用户名]\Documents\Navicat\MySQL\query\(实际为 SQLite 数据库存储,非明文 SQL 文件) - macOS 路径示例:
~/Documents/Navicat/MySQL/query/ - 这些文件夹里的内容不能直接复制粘贴到另一台机器上就“生效”,因为 Navicat 启动时会校验数据库结构、版本兼容性,甚至路径硬编码
真正能迁移的只有导出的 SQL 文本文件
如果你需要把“曾经执行过的某几条关键 SQL”带到新环境,唯一可靠方式是主动导出,而不是指望 Navicat 自动同步历史。
- 在
Ctrl+H窗口中右键某条记录 → 导出为 .sql 文件(不是“导出全部”,要逐条或分批选) - 导出的文件只含 SQL 语句本身,不含执行时间、状态、耗时、数据库连接名等元信息
- 导入时需手动新建查询窗口 → 粘贴执行,
Ctrl+H不会自动补回这条记录 - 注意编码:导出时选
UTF-8(不是 ANSI),否则中文注释或字段名可能乱码
Mac 和 Windows 之间迁移 query 目录容易失败
有人尝试直接拷贝 query/ 文件夹到另一台机器,结果 Navicat 启动报错或历史日志空白,原因很实在:
- Navicat for Mac 和 Navicat Premium 16/17 的内部 SQLite 表结构不完全一致
- Windows 下的
query.db文件在 macOS 上打开可能提示 “database disk image is malformed” - 即使文件能读,Navicat 也会因连接 ID 不匹配而过滤掉大部分记录(它用连接哈希做关联,不是靠 SQL 内容)
- 没有官方文档说明该数据库格式,逆向解析风险高、无维护保障
真正要跨平台保留可追溯的 SQL 记录,得放弃依赖 Navicat 自带历史,改用外部机制:比如把常用脚本存 Git 仓库、用 VS Code + SQLTools 插件管理、或者在数据库里建 dev_sql_log 表手动 INSERT。Navicat 是操作工具,不是日志系统——它点一下执行,但记账这件事,得你自己搭账本。


















