mysql视图的comment不会持久化到元数据中,show create view时不可见,因information_schema.views无comment字段,且alter view不支持alter column comment语法。

MySQL 视图的 COMMENT 不会持久化到元数据中,SHOW CREATE VIEW 时自然看不到——这不是 bug,是设计如此。
COMMENT 关键字在 CREATE VIEW 中被忽略
你写 CREATE VIEW v AS SELECT * FROM t COMMENT 'xxx',MySQL 解析器会接受语法,但不会把 COMMENT 存进 information_schema.VIEWS 或其他系统表。执行完再查 SHOW CREATE VIEW v,输出里只有原始 SQL,注释早已丢弃。
- MySQL 5.7 到 8.0 所有版本均如此,无例外
-
COMMENT在视图定义中属于“被解析但不被存储”的语法糖 - 与表/列的
COMMENT完全不同:后两者真实写入information_schema.TABLES和COLUMNS
ALTER VIEW ... ALTER COLUMN COMMENT 是无效操作
网上流传的 ALTER VIEW v ALTER COLUMN COMMENT 'xxx' 并非合法语法,MySQL 会直接报错 ERROR 1064。这个写法混淆了 SQL Server 的 ALTER VIEW ... WITH ENCRYPTION 或 PostgreSQL 的 COMMENT ON VIEW 行为。
- MySQL 不支持对视图对象本身附加元数据级注释
-
ALTER VIEW只允许重写整个查询逻辑(AS ...),不能修改属性 - 试图在
information_schema.VIEWS中查COMMENT字段?该表根本没这一列
真正能存注释的地方只有 VIEW_DEFINITION 文本本身
视图唯一可读的“注释载体”是它定义 SQL 里的内联注释,比如 /* 这是说明 */ SELECT * FROM t。但这类注释只存在于 VIEW_DEFINITION 字段字符串中,且极易被工具破坏:
- mysqldump 默认不带
--comments参数时,导出的 SQL 会删掉所有/* */和-- - 某些 ORM 或数据库客户端(如旧版 MySQL Workbench)在解析
VIEW_DEFINITION时主动 strip 注释 - 一旦执行
CREATE OR REPLACE VIEW,哪怕只改一个空格,原有注释文本也彻底丢失
为什么不用 information_schema 做依赖或注释管理
因为 MySQL 根本没在系统表里建这个能力——INFORMATION_SCHEMA.VIEWS 只有 TABLE_SCHEMA、TABLE_NAME、VIEW_DEFINITION、CHECK_OPTION、IS_UPDATABLE 这 5 个字段,没有 COMMENT,也没有 DEPENDENCIES。
- 想靠
SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = 'v'提取注释?字段不存在 - 想用
SHOW DEPENDENCIES查视图引用了哪些表?该命令在 MySQL 8.0.33 之前并不存在,属误传 - 所有“注释管理”必须绕开元数据,走外部方案:单独建表、文档约定、CI 静态检查
最易被忽略的一点:视图注释的不可靠性不是配置问题,也不是版本升级导致的退化,而是 MySQL 从 5.0 时代就定死的行为。任何指望通过调参数、换客户端、升版本来“恢复注释存储”的尝试,都会撞上这堵墙。










