能,SHOW FULL COLUMNS FROM table_name 可显示字段注释,比 DESCRIBE 多 Comment 列;漏写 FULL 或表名、注释未显式声明、超长截断、8.0+ 转义问题均会导致注释缺失或异常。

show full columns 能看到字段注释吗
能,但得用对命令——SHOW FULL COLUMNS FROM table_name 是 MySQL 中唯一原生命令级方式直接查字段注释的途径。它比 DESCRIBE 或 SHOW COLUMNS 多一列 Comment,专门存字段级注释内容。
常见错误是只敲 SHOW COLUMNS FROM table_name,结果发现没有 Comment 列;或者漏掉 FULL 关键字,导致注释被截断(尤其注释含空格或特殊字符时)。
-
FULL必须显式写出,不能省略 - 表名要区分大小写(取决于系统变量
lower_case_table_names,Linux 默认敏感) - 如果字段没设注释,
Comment列显示为空字符串,不是NULL
字段注释为空?检查 CREATE TABLE 语句是否带 COMMENT
字段注释不是自动产生的,必须在建表或修改字段时显式声明 COMMENT。比如:
CREATE TABLE user ( id INT PRIMARY KEY COMMENT '用户唯一ID', name VARCHAR(50) COMMENT '真实姓名,不支持空格' );
如果建表时没写,后续也没用 ALTER TABLE ... MODIFY COLUMN 补过,那 SHOW FULL COLUMNS 的 Comment 列就一定是空的。
- 补注释用:
ALTER TABLE user MODIFY COLUMN name VARCHAR(50) COMMENT '真实姓名' -
CHANGE COLUMN也能改注释,但要重写整个字段定义,容易出错 - 注释长度上限 1024 字符,超长会被截断,且不会报错
想批量导出所有表的字段注释,别硬记 show full columns
单表查没问题,但真要扫库、生成文档或对接下游系统,靠手动执行 SHOW FULL COLUMNS 效率低还易漏。更稳的方式是查 information_schema.COLUMNS 表:
SELECT table_name, column_name, column_comment FROM information_schema.COLUMNS WHERE table_schema = 'your_db_name' AND column_comment != '';
这个查询能跨表聚合,支持 WHERE 过滤、ORDER 排序,也兼容 MySQL 5.7+ 和 8.0+。注意两点:
-
table_schema是数据库名,不是当前 USE 的库名,必须显式指定 -
column_comment是字符串类型,空注释就是空字符串,不是NULL,所以用!= ''而不是IS NOT NULL - 权限不足时可能查不到
information_schema,需确认账号有SELECT权限
MySQL 8.0 的隐藏坑:COMMENT 可能被自动转义
MySQL 8.0.19+ 对字段注释里的反斜杠 和单引号 ' 做了更严格的转义处理。比如你写 COMMENT '路径: /usr/local',查出来可能变成 路径: /usr/local(少一个斜杠),或者报语法警告。
这不是 SHOW FULL COLUMNS 的问题,而是存储时解析逻辑变了。解决办法很实在:
- 插入注释前,用两个反斜杠
\表示一个字面量 - 避免在注释里写 SQL 片段、正则表达式或路径变量,除非你明确控制转义
- 用
SELECT column_comment FROM information_schema.COLUMNS校验实际存进去的是什么,比依赖SHOW更可靠
注释这事看着小,但一旦和 ORM 映射、文档生成工具联动,错一个字符就可能导致字段说明全乱。别信“应该没问题”,查一遍 information_schema 最踏实。


















