Navicat查询历史不支持跨平台共享。因其Windows版用LogHistory.txt文本日志,macOS版用query_history.db(SQLite),格式、路径、字段均不兼容,直接复制或改设置路径均无效;唯一可行方式是导出为CSV/SQL再手动导入,或使用跨平台通用的查询片段功能。
Navicat 查询历史是否支持跨平台共享
不支持。navicat 的查询历史(query history)默认以连接名强绑定,存储在本地路径下,且格式为平台相关二进制或 sqlite 文件(如 query_history.db 或 loghistory.txt),windows 和 macos 的文件结构、编码、路径分隔符、权限模型均不兼容。直接复制粘贴文件到另一系统会触发解析失败、乱码或被 navicat 忽略。
为什么改设置路径指向同步盘也不行
修改「设置位置」或「文件位置」只能影响新生成的配置文件(如备份、导入导出脚本、连接配置),但对查询历史无效——它不走这些路径配置项。即使你把 Windows 的 C:\Users\Alice\Documents\Navicat\MySQL\servers\prod-db\LogHistory.txt 手动同步到 Mac 的 ~/Documents/Navicat/MySQL/servers/prod-db/,Mac 版 Navicat 仍不会读取该文件,因为它只认自己生成的 query_history.db(SQLite 格式),而 Windows 版默认用文本日志。
- Windows 默认使用
LogHistory.txt(纯文本,按连接名分目录) - macOS 默认使用
query_history.db(SQLite 数据库,位于~/Library/Application Support/PremiumSoft/Navicat Premium/cache/) - 两者字段结构不同:macOS 版含
created_time、sql_text、connection_id;Windows 版只有时间戳、SQL、状态三列明文
真正能跨平台同步查询历史的唯一可行方式
放弃同步原始历史文件,改用「导出 → 跨平台查看 → 手动导入回当前环境」的离线流程:
- 在源端(如 Windows):执行
sqlite3 query_history.db "SELECT sql_text, created_time FROM query_history ORDER BY created_time DESC LIMIT 100;" > history_export.csv(需先确认是否存在该 DB;若无,则说明你用的是旧版,实际日志是LogHistory.txt,可用文本工具提取 SQL 行) - 将 CSV 或纯文本 SQL 备份到 iCloud / Dropbox / NAS 等同步盘
- 在目标端(如 macOS):用 Excel / VS Code 打开查看,或写个简单脚本批量插入到本地
query_history.db(注意字段映射和时间戳格式转换) - 更务实的做法:把高频复用的 SQL 保存为「查询片段」(
Query Snippets),该功能支持导出为.sql文件,跨平台完全通用,且可双击直接执行
容易被忽略的关键细节
很多人试图用符号链接(symlink)把 Windows 的 LogHistory.txt 指向 OneDrive 目录,再在 Mac 上挂载同一目录并 symlink 到对应路径——这看似聪明,但 Navicat 启动时会校验文件所有权、mtime 和内部哈希(尤其 v17+),一旦检测到路径异常或时间倒流,会静默清空或拒绝加载历史。真正的跨设备可追溯性,靠的是人为归档习惯,不是路径魔术。


















