navicat建表需先选中目标数据库,再配置主键、utf8mb4字符集、innodb引擎及not null约束,保存前检查ddl语句,建完立即插入中文数据验证。

直接在 Navicat 里点几下就能建表,但字段类型选错、主键没设、字符集漏配,后面插入中文或自增 ID 就会报错——这不是操作问题,是设计阶段就埋了坑。
点击“新建表”后第一件事:确认当前数据库已选中
Navicat 不会自动把新建表挂到你心里想的那个库下。如果左侧导航栏里没展开目标数据库(比如 class_one),而是连着根连接名(如 ahao001)就右键 → 新建表,那表会被建在默认数据库(通常是 information_schema 或空库)里,后续查不到、用不了。
- 务必先双击目标数据库(如
class_one),让它展开并高亮 - 再右键其下的
表节点 → “新建表” - 建完保存时,Navicat 会自动把表归属到当前展开的数据库,不用手动指定
字段配置最容易踩的三个坑
表设计器看着简单,但几个关键开关不点,建出来的表基本没法用:
-
id字段勾了“自动增长”,但没勾“主键” → MySQL 拒绝创建:自动增长列必须是索引的一部分(通常是主键) - 字符串字段(如
name)只写了VARCHAR(20),没在右侧“字符集”下拉里选utf8mb4→ 插入中文时存成问号或直接报错Incorrect string value - 所有字段都勾了“允许 NULL”,但业务上
name和sex实际不能为空 → 后续应用层得反复校验,不如建表时就用NOT NULL约束住
保存前必须检查的两项设置
点击“保存”弹出命名框时,别急着输名字。先看右下角两个隐藏选项:
- “存储引擎”默认可能是
MyISAM,要手动改成InnoDB—— 否则不支持事务、外键、行锁,线上环境基本不用 MyISAM - “字符集”和“排序规则”默认继承数据库设置,但如果数据库建的时候用了
utf8(不是utf8mb4),这里得手动改成utf8mb4+utf8mb4_0900_ai_ci,否则 emoji 和部分生僻字存不进去
建完表立刻验证的最小动作
表出现在左侧列表 ≠ 表结构正确。最简验证方式就是点开它,手动插一条数据:
- 双击新表 → 点右下角“+”添加一行
- 给
id留空(自动增长字段不能填),name填“张三”,sex填“男” - 点底部对勾提交 → 如果弹窗报错,八成是字符集或 NOT NULL 约束没配对
- 成功后右键表名 → “对象信息” → 切到“DDL”页,能看到实际生成的
CREATE TABLE语句,对照检查是否符合预期
真正麻烦的不是建表动作本身,而是字段约束、字符集、引擎这些选项一旦选错,后续改起来要锁表、导数据、重命名,远比一开始多点两下成本高得多。











