Navicat 本身不提供自动 DDL 变更日志功能,仅支持导出当前表结构的只读 DDL 快照;真正可追溯的变更需依赖手动导出、Git 管理 SQL 文件或数据库审计日志(如 MySQL general_log 或 audit_log)。
Navicat 是图形化数据库管理工具,不是版本控制或变更审计系统。它不会像 pt-online-schema-change 或 Flyway 那样自动捕获、记录或回滚表结构变更。你手动执行的 ALTER TABLE、CREATE TABLE 等操作,Navicat 不会默认写入本地日志文件或生成变更快照。
每次修改表结构后,立刻导出当前表的完整 DDL,是实际项目中最可控、零依赖的记录方式。Navicat 提供了便捷入口,但要注意几个关键点:
table_name_YYYYMMDD_HHMMSS.sql 命名,并存入与项目代码同级的 schema/ 目录下,方便追溯ENGINE=InnoDB)、字符集(CHARSET=utf8mb4)和注释(COMMENT),这些都属于结构的一部分,别手动删掉仅靠 DDL 导出只能知道“结果”,不知道“怎么变的”。若需复盘某次变更的具体步骤(比如加字段+改类型+删索引),得依赖数据库自身的日志能力:
general_log(仅限开发/测试环境!生产慎用):SET GLOBAL general_log = 'ON';
SET GLOBAL general_log_file = '/path/to/general.log';
然后在 Navicat 中执行操作,之后 grep 匹配表名和时间范围audit_log 插件,记录所有 DDL 语句,但需管理员权限安装配置pg_audit 扩展,或直接查 pg_stat_operations(需开启 track_counts = on)如果你团队频繁修改表结构、多人协作、还要上线审批,硬靠 Navicat 手动导出+日志拼凑,迟早丢变更、踩冲突。这时候该让专业工具接管:
V1_2__add_user_status.sql 或 changelog.xml,Navicat 只作为执行终端之一最常被忽略的一点:Navicat 导出的 DDL 默认不含 IF NOT EXISTS 或 DROP TABLE IF EXISTS,直接用于重建会报错;而迁移工具生成的脚本通常自带幂等逻辑。这点在自动化部署时尤为关键。