Navicat ER图中的“文本批注”仅为本地绘图层标注,不存入数据库、不导出、不可协作;真实注释须通过对象信息窗口写入数据库元数据(如MySQL的COMMENT),并启用ER图显示开关。
ER图里加的“文本批注”根本不会存进数据库
navicat 15 的 er 图(通过「模型」→「从数据库导入…」或右键数据库→「逆向数据库到模型」生成)中,所谓“添加文本批注”,实际只是绘图层的视觉标注,和表结构、字段定义完全无关。它不触发任何 alter、不写入 information_schema、下游工具(dbeaver/sqlalchemy/datagrip)查不到,导出 sql 时也自动丢弃。
常见错误现象:在图表空白处双击写了一堆说明,团队成员打开却看不到;或者导出后发现 SQL 文件里一个 COMMENT 都没有。
- 这类批注只存在 .ndm 模型文件本地,换台电脑或重装 Navicat 就丢失
- 不支持导出为图片/PDF 时保留(除非截图)
- 不能被版本控制(.ndm 是二进制,diff 无意义)
真要提升协作效率,必须把注释落到数据库元数据里
团队能长期依赖的注释,只有写进数据库系统表的那些——MySQL 存在 TABLE_COMMENT/COLUMN_COMMENT,PostgreSQL 存在 pg_description,SQL Server 存在 sys.extended_properties。Navicat 的图形操作只是帮你发对应的 DDL。
关键动作不是“在图上点”,而是用对入口:
- 表注释:右键表 →
对象信息→ 「选项」页 → 填Comment→ 点保存(触发ALTER TABLE ... COMMENT = 'xxx') - 字段注释:右键表 →
对象信息→ 「列」页 → 找到字段 → 填右侧Comment→ 保存(MySQL 触发MODIFY COLUMN ... COMMENT) - 别用「设计表」界面最下方那个灰掉的 Comment 框——它只改 Navicat 本地缓存,不执行语句
让 ER 图显示这些真实注释,只需开两个开关
逆向建模后,ER 图默认不显示字段/表注释,哪怕数据库里已存在。必须手动启用渲染:
- 确保你处在「模型」视图(不是数据库连接列表),右侧属性窗格可见
- 点击顶部「图表」选项卡 → 勾选
显示字段注释和显示表注释 - 如果仍不显示,检查数据库连接设置:「高级」页签下不要勾选
Disable metadata cache,否则 Navicat 查不到information_schema里的注释
此时图中字段名下方会出现灰色小字,内容来自数据库真实元数据,而非你手写的贴纸式批注。
批量加注释别点鼠标,用查询窗口跑 SQL 更稳
30 张表、200 个字段逐个开 对象信息 窗口填,极易漏、难复核、无法留痕。直接在 Navicat 查询窗口执行标准 SQL:
ALTER TABLE `user` COMMENT = '用户主表,含注册与基础资料'; ALTER TABLE `user` MODIFY COLUMN `status` TINYINT COMMENT '0=待激活,1=正常,9=注销';
注意:
- MySQL 大表慎用
MODIFY COLUMN(会锁表重建),可用CHANGE COLUMN status status TINYINT COMMENT '...'(类型不变时更轻量) - 执行前先点右上角「导出结果为 SQL」备份当前结构
- PostgreSQL 用
COMMENT ON TABLE user IS '...';和COMMENT ON COLUMN user.status IS '...';
真正影响协作效率的,从来不是图上多贴几个便签,而是注释是否真实、可查、可版本化、可被所有工具读取——这要求你绕过图形界面的幻觉,直击数据库元数据本身。


















