Ctrl+D是Navicat表设计器中唯一能完整复制字段定义(含类型、长度、NULL性、默认值、注释、自增属性)的快捷键;Ctrl+C/V仅复制字段名,不保留任何结构信息。
Ctrl+C/V 在表结构设计器里根本不管用
直接在 navicat 的「表结构」或「设计表」界面(即打开表后点 ctrl+d 进入的视图)里选中字段行,按 ctrl+c,再 ctrl+v——这不会复制字段,只会触发“复制字段名到剪贴板”这种纯文本行为,粘贴出来只有字段名,没有类型、长度、是否为空、默认值等任何定义。这是新手最常踩的坑,以为和 excel 一样操作,结果建出来的字段全是 varchar(255) + null,连主键都丢了。
真正能复制完整字段定义的快捷键是 Ctrl+D
Ctrl+D 是 Navicat 表设计器中唯一能克隆字段定义的快捷键,它会完整复制当前选中字段的:数据类型、长度/精度、是否允许 NULL、默认值、注释、甚至自增属性(如果原字段是 AUTO_INCREMENT)。但注意:
- 必须先单击选中某一行字段(不能多选),再按
Ctrl+D - 复制后的新字段会插入在原字段下方,名称自动加后缀如
name_copy,需手动改名 - 外键、索引、CHECK 约束不会被复制,它们属于表级对象,不在字段行内定义
- Mac 版是
COMMAND+D,不是Ctrl+D
批量复制多个字段?只能靠右键菜单
设计器里不支持多选字段后一键复制。如果你要复制 3 个字段(比如 created_at、updated_at、is_deleted)到另一个表,只能:
- 逐个点击字段 →
Ctrl+D复制 → 修改新字段名 - 或者改用右键方式:选中字段 → 右键 →
Copy Field(不是Copy)→ 切换到目标表 → 右键 →Paste Field(s) -
Copy Field和Paste Field(s)才真正保留类型、约束、默认值;而普通右键Copy只复制名称 - 跨连接复制字段时,
Paste Field(s)会失败,此时必须导出 DDL 或用「数据传输」功能
复制字段后记得检查字符集和引擎
即使用了 Ctrl+D 或右键 Copy Field,新建字段也不会继承表级设置。常见问题:
- 源表是
utf8mb4,新字段建出来却是utf8(尤其老版本 Navicat) -
TINYINT(1)复制后变成TINYINT,丢了显示宽度,某些 ORM 会误判为布尔类型 - 源字段有
COMMENT '创建时间',复制后注释丢失(部分 Navicat 版本存在该 bug) - 执行前务必在查询窗口运行
SHOW CREATE TABLE `table_name`对比确认
实际字段定义容易被忽略的是约束继承逻辑——Navicat 不会帮你把 NOT NULL、DEFAULT CURRENT_TIMESTAMP 这类语义自动带过去,哪怕你看到界面上勾了“允许空”或填了默认值,也得手动核对生成的 SQL。











