navicat中修改表/字段备注必须通过“对象信息”对话框填写并点击“保存”才会执行真实ddl语句,而“设计表”界面的comment输入框仅更新本地缓存,不会写入数据库。
navicat 里改了表备注,但 dbeaver、datagrip 或程序里查 information_schema.tables.table_comment 是空的——根本原因不是“没保存”,而是你改的压根没进数据库,只存在 navicat 本地缓存里。
Navicat 的「表设计」界面填的「备注」字段不写库
很多人在「设计表」界面最下方那个标着 Comment 的输入框里写了内容,点保存就以为完事了。但这个操作在多数版本(尤其是 v15 及更早)中,**只是更新 Navicat 自己的 UI 缓存**,不会生成或执行任何 ALTER TABLE ... COMMENT = 'xxx' 语句。
- MySQL:必须走右键表 →
对象信息→ 切换到「选项」页 → 修改Comment字段 → 点「保存」,此时 Navicat 才会发出真实 DDL - PostgreSQL:图形界面的「表设计」里填的
Comment完全无效;必须用对象信息→ 「选项」页 → 填完保存,才会执行COMMENT ON TABLE ... - SQL Server:得进
对象信息→ 「扩展属性」→ 添加类型为MSSQLTableComment的属性,否则不会写入sys.extended_properties
字段注释同理:「设计表」里的 Comment 列只是摆设
在「设计表」界面右键列头勾出的 Comment 列,对 MySQL/PostgreSQL 来说,**只是本地显示标签**。哪怕你填满所有行、点磁盘图标保存,SHOW FULL COLUMNS FROM t 或 \d+ t 也看不到结果。
- MySQL:必须进
对象信息→ 「列」页签 → 找到目标字段 → 在右侧Comment栏填写 → 保存,才触发MODIFY COLUMN ... COMMENT - PostgreSQL:同样要走
对象信息→ 「列」→ 填Comment→ 保存,才会执行COMMENT ON COLUMN ... - 注意长度限制:
table_comment和字段Comment都有上限(MySQL ≤ 1024 字符),超长会被静默截断,无提示
其他客户端读不到?先确认 Navicat 连接是否用了元数据降级模式
即使你走对了路径、注释也成功入库,DBeaver 或 ORM 仍可能读不到——问题常出在 Navicat 的连接配置上。
- MySQL 连接设置中,若勾选了
Disa(应为 Disable)metadata caching或Use old MySQL protocol,Navicat 会跳过information_schema查询,导致它自己都拿不到注释,更别说同步给下游 - 检查连接「高级」页签:确保未启用
Disable metadata caching;Use SSL和Allow user variables按需开启即可,但这两个不影响注释读取 - 验证方式:在 Navicat 查询窗口执行
SELECT table_comment FROM information_schema.tables WHERE table_name = 'your_table' AND table_schema = 'your_db';,如果返回空,说明注释确实没落库或元数据被屏蔽
真正容易被忽略的一点:Navicat 的「对象信息」对话框里填的注释,只有在点击「保存」后才执行语句;而「设计表」界面的保存动作,对注释而言多数时候只是刷新本地视图——这两者的行为边界非常模糊,但后果差得远。











