navicat 15 的表设计器不支持设置 column_format 或 storage 属性,因这些属底层物理存储控制项,gui 仅覆盖常用逻辑属性;必须通过查询窗口手动执行 alter table ... modify column 语句修改。
navicat 15 的可视化界面本身不提供“列存储属性”设置入口——mysql 的列存储(如 column_format、storage)无法通过表设计器修改,必须用 sql 手动执行。
为什么「字段属性」里找不到 COLUMN_FORMAT 或 STORAGE 选项
Navicat 15 的「设计表」→「字段」页签只暴露常用属性:类型、长度、是否为空、默认值、自增、注释等。MySQL 中与列物理存储相关的属性(如 COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}、STORAGE {DISK|MEMORY})属于底层 DDL 控制项,不在 GUI 映射范围内。即使你勾选了「自动递增」或改了「默认值」,这些操作也只会生成标准的 ALTER TABLE ... MODIFY COLUMN,不会带 COLUMN_FORMAT 子句。
哪些操作看似相关但实际无效
- 在「字段」页签里修改「数据类型」(比如从
VARCHAR(255)改成TEXT):仅变更类型,不触碰存储格式 - 勾选「自动递增」或填「默认值」:影响逻辑行为,与磁盘/内存存储方式无关
- 点击「保存」后 Navicat 自动生成的
ALTER TABLE语句:不含COLUMN_FORMAT或STORAGE关键字,执行后该列仍保持原存储策略
真正能改列存储属性的唯一方式
必须切换到「查询」窗口,手动执行带 COLUMN_FORMAT 或 STORAGE 的 ALTER TABLE ... MODIFY COLUMN 语句。例如:
ALTER TABLE users MODIFY COLUMN avatar LONGBLOB COLUMN_FORMAT DYNAMIC;
注意以下限制:
-
COLUMN_FORMAT仅对TEXT、BLOB及其变体有效;对INT、VARCHAR等常规类型设了也忽略 -
STORAGE MEMORY仅适用于 MEMORY 引擎表,InnoDB 表设了会报错 - 修改后需执行
SHOW CREATE TABLE users验证,GUI 刷新「设计表」仍不会显示该属性——它根本不读取也不渲染这些字段
容易被忽略的关键点
很多人以为「设计表」能覆盖所有 DDL 能力,其实它只封装了 MySQL 兼容性高、使用频率高的子集。列级存储控制属于高级调优范畴,Navicat 有意将其排除在可视化流程外。如果你正为某列的读写性能卡顿排查原因,别在 GUI 里反复点「保存」,直接查 INFORMATION_SCHEMA.COLUMNS 的 COLUMN_FORMAT 字段,再决定是否需要手写 ALTER。











