navicat 17+中sql预览位于表设计窗口顶部标签栏,与“字段”“索引”并列;仅实时反映未保存的ddl修改,空白表示无变更,保存后清空,不校验业务约束或引擎兼容性。
能实时看,但必须在保存前点“sql预览”选项卡——它不记录历史、不响应已保存操作,只反映当前未提交的结构修改。
打开设计视图后,“SQL预览”选项卡在哪
Navicat 17+ 把 SQL预览 放在表设计窗口顶部的标签栏里,和 字段、索引、外键 并列。双击表名进入设计模式后,直接点击该标签即可切换过去。不要右键找“对象信息 → DDL”,那个只显示当前最终状态(等价于 SHOW CREATE TABLE),不是你正在做的变更。
哪些操作会触发 SQL 预览内容更新
只有 DDL 类结构变更才会生成语句,且必须是“已操作但未保存”的状态:
- 新增/删除字段 → 触发
ADD COLUMN或DROP COLUMN - 修改字段类型(如
VARCHAR(50)→VARCHAR(100))→ 生成MODIFY COLUMN - 改字段名(哪怕只动一个字母)→ 自动切为
CHANGE COLUMN - 勾选/取消“设为主键”或“允许 NULL”→ 对应
ADD PRIMARY KEY或调整约束 - 添加/删除索引 → 出现
ADD INDEX/DROP INDEX - 字段含空格或特殊字符(如
user name)→ 预览中自动加反引号:`user name`
注意:如果你什么都没改就点开 SQL预览,它会是空白的;保存后,内容也会立即清空。
为什么预览语句和实际执行可能不一致
SQL预览 只保证语法合法,不校验业务逻辑或 MySQL 兼容性限制:
- 把
INT改成BIGINT能预览成功,但如果该列上有全文索引,MySQL 8.0+ 会拒绝执行ALTER TABLE ... MODIFY COLUMN - 删主键时没检查是否被外键引用 → 预览照常显示
DROP PRIMARY KEY,但执行时报错Cannot drop index 'PRIMARY': needed in a foreign key constraint - 设了
DEFAULT CURRENT_TIMESTAMP但字段不是TIMESTAMP或DATETIME→ 预览无提示,执行失败 - 使用了
ENGINE=MyISAM但目标库禁用了该引擎 → 预览不报错,执行时抛出Unknown storage engine 'MyISAM'
真正容易被忽略的是:预览里的语句默认用 MODIFY COLUMN,除非你主动改字段名,否则不会出现 CHANGE COLUMN —— 这影响脚本可读性,也影响某些迁移工具(如 Flyway)对变更的识别粒度。










