navicat 默认不导出字段注释,需同时满足三条件:勾选「导出字段注释」选项、目标库连接类型设为正确数据库(如mysql)、源库information_schema.column_comment可正常读取;缺一即静默丢失。
字段注释丢了,不是 navicat “坏了”,而是它默认压根不碰 comment——必须手动开开关、配对类型、查得着元数据,三者缺一不可。
结构同步时没勾「导出字段注释」
Navicat 的结构同步向导默认只比对表名、字段名、类型、主键这些硬结构,column_comment 属于可选元数据,默认被跳过。即使源库每个字段都写了 COMMENT '创建时间',目标库建表语句里也不会出现 COMMENT 子句。
- 启动同步向导后,务必点到「选项」页(Options)
- 找到并勾选「导出字段注释」和「导出表注释」两项(它们默认是未勾选的)
- 如果保存为任务复用,该勾选项不会自动存进模板,每次执行前都得再确认一遍
目标库连接类型设错导致注释逻辑被跳过
Navicat 是否读 information_schema.columns.column_comment,完全取决于连接配置里的「数据库类型」设置。如果实际连的是 MySQL 8.0,但「高级」页签里误选成 PostgreSQL 或 Generic,它连查都不查,直接静默丢弃注释。
- 右键目标连接 →「编辑连接」→「高级」页签 → 确认「数据库类型」与服务端严格一致(MySQL 5.7/8.0 就选 MySQL)
- 验证是否能读到注释:在查询窗口执行
SELECT column_comment FROM information_schema.columns WHERE table_name = 'your_table' LIMIT 1,返回 NULL 不一定是 Navicat 问题,可能是权限或字符集导致 - MariaDB 一般兼容 MySQL 类型,但旧版本需确认驱动支持
column_comment字段
源库根本读不到字段注释值
就算开了开关、连对了类型,如果 Navicat 查询 information_schema.columns 拿回来的 column_comment 是 NULL 或空字符串,同步结果自然为空。常见原因不是工具问题,而是源头或环境限制。
- MySQL 5.6 及更早版本中,部分 JDBC 驱动(尤其 Navicat 12 及以下)不返回
column_comment值 - 连接用户缺少对
information_schema的SELECT权限(MySQL 8.0+ 默认收紧,必须显式授权) - 连接字符集设为
latin1或utf8(非utf8mb4),中文注释乱码后被解析为空 - 建表时根本没写
COMMENT—— 执行SHOW FULL COLUMNS FROM your_table看Comment列是否全空,空就说明是源头缺失,得补建表语句
最容易被忽略的点:字段注释不是“填完就生效”的 UI 行为。它依赖三层对齐——连接类型正确、同步开关打开、元数据可读。漏掉任意一层,都会静默丢失,且无错误提示。别怪工具,先查这三项。











