引擎与字符集要点
- ENGINE=InnoDB 支持事务和外键,几乎总是首选
- 字符集用 utf8mb4,utf8 只是三字节存不下部分 emoji
- COLLATE 决定排序和比对规则,中文常用 xxx_general_ci
- 建表不写字符集会继承库的默认,可能和你预期不一致
- MyISAM 不支持事务,只读统计表才考虑,新项目基本不用
- 引擎和字符集定错改起来要锁表,建表时一次定准
引擎与字符集示例
CREATE TABLE product (
id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(80) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
避坑提醒:用 utf8 而非 utf8mb4,用户昵称里的 emoji 会写入失败或变问号,这是老项目经典坑。