Navicat建表存中文需设utf8mb4字符集、字段类型匹配且主键须手动勾选A_I;导入Excel前须保存为UTF-8 CSV并显式选utf8mb4;生成SQL需关闭非标选项避免执行失败。
Navicat 里新建表时字段类型选不对,存不了中文怎么办
mysql 默认字符集是 latin1,建表不显式指定就容易出现插入中文报错 incorrect string value。navicat 图形界面里点几下就能改,但默认不帮你设对。
- 建表前先右键连接 →
编辑连接→ 在高级标签页勾选初始化时设置字符集,填入utf8mb4 - 新建表时,在字段列表下方找到
表选项(或右下角小齿轮图标),把字符集改成utf8mb4,排序规则选utf8mb4_unicode_ci - 字段类型别只盯着
VARCHAR:存微信昵称、评论内容这类可能含 emoji 的,长度要 ≥ 255,且必须配utf8mb4;纯中文短文本用VARCHAR(50)就够
用 Navicat 自动生成建表 SQL 却没法直接执行
Navicat 点“保存”后生成的 SQL 是带图形化元数据的(比如注释、引擎参数、字符集),但粘贴到其他环境(如命令行、Docker MySQL)常报错,因为多了它自己加的非标准语法。
- 点保存前,先打开
工具 → 选项 → 对象设计器 → 生成 SQL 时包含,把勾去掉:注释存储引擎(除非你明确要用MyISAM)字符集与排序规则(如果目标库已统一配置) - 执行前快速检查 SQL 开头有没有
/<em>!40101 SET ... </em>/这类条件注释——有就删掉,它们只在特定 MySQL 版本生效 - 如果只是想看语句长啥样,右键表 →
对象信息 → DDL,这里显示的是最简可用 SQL
Navicat 表设计里设了主键但没自动加自增
图形界面拖拽加个字段、点一下“主键”图标,不代表它就是 AUTO_INCREMENT。新手常以为“主键 = 自增”,结果插入时漏写 ID 或传 NULL,直接报错 Field 'id' doesn't have a default value。
- 主键字段右侧列中,必须手动勾选
A_I(Auto Increment)复选框,不能只点主键图标 - 类型得是整数系:
TINYINT、INT、BIGINT,VARCHAR或UUID类型即使设主键也不能自增 - 如果已有表要补自增,别在 Navicat 设计器里直接改——先用
ALTER TABLE t ADD COLUMN id INT PRIMARY KEY AUTO_INCREMENT FIRST;,再通过修改表结构删掉旧主键字段(注意外键依赖)
从 Excel 导数据进 Navicat 表,中文全变问号
不是编码问题,是 Navicat 导入向导默认按系统 locale 解析 CSV/Excel,Windows 中文版常误判为 GBK,而你的表是 utf8mb4,两边对不上。
- 导入前先确认 Excel 文件另存为
CSV UTF-8(逗号分隔)格式(Excel 2016+ 在“另存为→浏览→文件类型”里可选) - Navicat 导入向导第三步“字段选项”里,把
字符集明确选成utf8mb4,不是默认的auto - 如果导入后仍有乱码,别急着重导:用
SELECT HEX(字段名) FROM 表 LIMIT 1;看实际存的是什么字节。如果是C4E3BAC3这种,说明是 GBK 编码被当 UTF-8 解了,得清空重来
Navicat 的快捷操作省时间,但每个“点一下”背后都有隐含约束。最常翻车的不是不会点,而是点了之后没留意右下角那个不起眼的 表选项 或字段行末的 A_I 小框。


















