Navicat 不保存异构表字段类型映射历史,仅记录本地SQL与界面操作日志,不含语义化映射规则;需人工留痕或借助脚本、版本工具实现跨库字段映射追踪。
Navicat 本身不保存“异构表字段类型映射历史”
navicat 没有内置的跨数据库(比如 mysql ↔ postgresql)字段类型自动映射日志,更不会记录你“曾经怎么把 varchar(255) 映射成 text”这类人工决策过程。它只忠实记录你本地执行过的 sql 操作和界面操作——也就是「历史日志」,但这个日志里没有语义化的“映射规则变更”条目。
能查到的只有操作痕迹:SQL 执行 + 设计表动作
如果你在 Navicat 中做过字段类型调整(比如改了 MySQL 表的 age 字段从 TINYINT 到 SMALLINT),这些行为会出现在历史日志里,但仅以 DDL 语句形式存在,不会标注“这是为适配 PostgreSQL 做的兼容性修改”。
- 快捷键
Ctrl+H或菜单【工具】→【历史日志】可打开该窗口 - 日志中搜索关键词如
ALTER TABLE、MODIFY COLUMN、CHANGE COLUMN能定位字段变更动作 - 如果用过【设计表】改过字段,日志里会出现类似
ALTER TABLE `t_user` MODIFY `name` VARCHAR(100) NOT NULL的记录 - 注意:日志默认只存本地客户端操作,不包含服务端其他工具(如命令行、其他客户端)的变更
真正需要“映射对比”,得靠人工或外部脚本补位
Navicat 不提供字段类型跨库对照表,也不生成映射变更报告。若你正在做数据库迁移或同步,想追踪“MySQL 的 DATETIME 上次被我手动转成 PostgreSQL 的 TIMESTAMP WITHOUT TIME ZONE 是哪天”,那必须自己留痕:
- 在历史日志旁手动建个笔记文档,写清每次映射调整的日期、源/目标类型、原因(例如:
2026-03-10: MySQL DATETIME → PG TIMESTAMP WITH TIME ZONE (需保留时区)) - 用 SQL 查询
information_schema.columns抓取当前字段定义,再导出比对(例如用SELECT column_name, data_type, character_maximum_length FROM information_schema.columns WHERE table_name = 'xxx') - 避免依赖 Navicat 的【对象信息】→【DDL】面板直接抄语句——它只反映当前状态,不是变更历史
容易忽略的关键限制
历史日志不是审计日志,它不记录谁改的、为什么改、改前值是什么。它只是你这台电脑上 Navicat 这个软件的操作快照,关掉软件再重装,历史就丢了(除非你开启了云同步且该功能支持日志备份——目前 Navicat Premium / Cloud 版均未公开支持此特性)。
真要长期追踪字段映射演进,别指望 UI 点点点;得把映射逻辑代码化,比如用 Python 脚本定期抓取两库 schema 并 diff,或者用 Liquibase / Flyway 管理变更版本——Navicat 只适合当“执行终端”,不是“变更中枢”。

















