Navicat 16 导出 SQL 时注释丢失的主因是“结构注释”默认关闭,需在“转储 SQL 文件”→“高级”中手动勾选“包含注释”;且该选项仅在“导出表结构”模式下生效,MySQL 5.6 及更早版本可能存在 information_schema.column_comment 返回空值的问题。
不是 navicat 16 的 bug,而是导出设置里“结构注释”默认被关掉了——这是最常被忽略的开关。
导出 SQL 时注释丢失的直接原因
Navicat 16 默认不导出 COMMENT 语句,哪怕你在 MySQL 中已用 COMMENT 'xxx' 明确写了表和字段注释。它读取 information_schema.columns.column_comment 是没问题的,但导出逻辑默认跳过该字段。
- 右键表 →「转储 SQL 文件」→ 弹窗底部勾选「导出表结构」后,必须手动点开「高级」选项卡
- 找到「包含注释」或「Include comments」复选框(英文版),确保它被勾选
- 该选项在「导出表结构」模式下才生效;若只勾了「导出表数据」,这个开关压根不会出现
MySQL 版本与注释兼容性陷阱
即使开了「包含注释」,MySQL 5.6 或更早版本仍可能无法正确提取字段注释,因为其 information_schema.columns 表中 column_comment 字段存在返回空值的已知行为。
- 验证是否真有注释:执行
SELECT column_name, column_comment FROM information_schema.columns WHERE table_schema = 'your_db' AND table_name = 'user_info'; - 如果查询结果里
column_comment已为空,说明问题出在数据库端,不是 Navicat 导出设置的问题 - MySQL 5.7+ 和 8.0 推荐使用
utf8mb4字符集 +utf8mb4_0900_ai_ci排序规则,避免中文注释因编码解析失败而变空
导出模板或连接驱动导致的静默丢注释
某些场景下,Navicat 实际读到了注释,但因模板渲染或驱动适配问题没写进 SQL —— 尤其是用 ODBC、MariaDB Connector 或旧版驱动连接时。
- 检查当前连接使用的驱动:右键连接 →「编辑连接」→「高级」→ 查看「Driver」字段(如显示
mysql-connector-java或mariadb-java-client) - 优先切换为 Navicat 内置原生驱动(通常标为「MySQL Native」或「Navicat MySQL Driver」)
- 若用的是 PostgreSQL 兼容模式或 MariaDB,注释字段名可能不一致(如
col_description()),Navicat 16 对这类非标准实现支持有限,建议改用原生 PostgreSQL 客户端导出
真正容易被忽略的是:「包含注释」开关只影响 CREATE TABLE 语句里的 COMMENT,而不会补全 ALTER TABLE ... COMMENT 这类后期追加的注释 —— 如果你靠 ALTER 加注释,得确认这些语句本身是否被包含在导出范围内。


















