navicat 16 导出sql时注释丢失,主因是“包含注释”开关默认关闭且仅在“导出表结构”模式下的“高级”选项中可见;需手动勾选,并确保mysql 8.0+用户已授予information_schema.columns的select权限。

导出 SQL 时“包含注释”开关默认关闭
Navicat 16 导出结构时,COMMENT 语句默认不生成——不是读不到,是压根不写。这个行为由一个隐藏开关控制,且只在特定模式下可见。
- 必须右键表 →「转储 SQL 文件」→ 勾选「导出表结构」(仅结构或结构和数据均可)
- 点开「高级」选项卡 → 找到并勾选
Include comments(英文版)或「包含注释」(中文版) - 若只勾了「导出表数据」,该选项根本不会出现,导出结果必然无注释
- 该开关只影响
CREATE TABLE中的COMMENT子句,对后期用ALTER TABLE ... COMMENT追加的注释无效
MySQL 8.0+ 用户需检查 information_schema 权限
即使开了「包含注释」,导出结果里仍是空的,大概率是 Navicat 查询 information_schema.columns.column_comment 时被权限拦截了。
- 执行
SELECT column_name, column_comment FROM information_schema.columns WHERE table_schema = 'your_db' AND table_name = 'your_table'; - 如果
column_comment全为NULL,但你知道注释确实存在,说明当前用户缺少对information_schema的SELECT权限 - 在 MySQL 8.0+ 上需显式授权:
GRANT SELECT ON information_schema.columns TO 'your_user'@'%'; - 注意:该权限不继承自数据库级授权,必须单独授予
Design Table 界面不显示 Comment 列
你在可视化设计器里看不到注释输入框,不是 Bug,是它默认隐藏了这一列。
- 在「设计表」界面任意字段列头(如
Field文字上方)右键 → 勾选Comment - 别输成「备注」「说明」或大小写错误的
comment,必须是首字母大写的Comment - 填完后务必点工具栏的
Save(磁盘图标),Ctrl+S 在 Navicat 里默认是执行查询,不是保存表结构 - 确认你进的是「设计表」,不是双击表名打开的数据页——后者不支持编辑注释
PostgreSQL 或 MariaDB 场景下注释逻辑不兼容
Navicat 16 对非标准注释实现支持有限,尤其在 PostgreSQL(依赖 col_description())或旧版 MariaDB 上容易静默丢注释。
- 检查当前连接驱动:右键连接 →「编辑连接」→「高级」→ 查看
Driver字段 - 优先切换为
Navicat MySQL Driver或PostgreSQL Native,避免使用mariadb-java-client或 ODBC 驱动 - PostgreSQL 数组字段同步失败时,注释丢失常伴随 DDL 错误(如
tags ARRAY缺少元素类型),此时建议改用pg_dump -s直接导出 - 若用的是 PostgreSQL 兼容模式,Navicat 可能根本没尝试读取注释元数据,换原生客户端更稳妥











