

CREATE DATABASE `db02`
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci;

目录标题
MySQL 创建库字符集与排序规则完整笔记
1. 查看数据库字符集与排序规则
### 查看所有库的默认字符集/排序规则
SELECT * FROM information_schema.SCHEMATA;
查看指定库的创建语句
SHOW CREATE DATABASE db01\G
2. 使用 utf8mb4 + utf8mb4_0900_ai_ci 创建数据库
MySQL 8.0 默认字符集 = utf8mb4
默认排序规则 = utf8mb4_0900_ai_ci
标准创建语句:
CREATE DATABASE `db02`
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci;
3. 报错:Unknown collation ‘utf8mb4_0900_ai_ci’
你在创建 mbmdb 时遇到错误:
ERROR 1273 (HY000): Unknown collation: 'utf8mb4_0900_ai_ci'
原因:
你所连接的 MySQL 实例 并没有支持 utf8mb4_0900_ai_ci 排序规则
可能是因为:
- MySQL 版本低(如 5.7)
- 兼容模式(如 MariaDB)
- 会话连接到了旧实例
- socket 连接错实例
4. 后来创建 db02 又成功
你执行:
CREATE DATABASE `db02`
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci;
成功创建!
说明你后来连接的 MySQL 实例 版本是 8.0+,支持 utf8mb4_0900_ai_ci。
5. 信息架构查看结果(关键)
你的查询:
select * from information_schema.SCHEMATA;
结果显示:
| SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME |
|---|---|---|
| db01 | utf8mb3 | utf8mb3_general_ci |
| db02 | utf8mb4 | utf8mb4_0900_ai_ci |
说明:
db01是旧库(utf8mb3,8.0 之前旧字符集)db02用的是 8.0 的默认 utf8mb4_0900_ai_ci
6. SHOW CREATE DATABASE 说明
CREATE DATABASE `db01` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */
说明:
- db01 是由 旧版本 MySQL 创建,字符集是 utf8mb3(历史字符集)
- 并没有设置新的 utf8mb4 排序规则
7. 如何正确创建两个库(mbmdb、mbmlog)
最终建议你直接使用 MySQL 8.0 标准写法:
CREATE DATABASE `xxx`
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_0900_ai_ci;
8. 如何检查当前 MySQL 实例是否支持 0900 排序规则
SHOW COLLATION LIKE 'utf8mb4_0900%';
有结果 → 支持
无结果 → 不支持(旧 MySQL / MariaDB)
9. 总结
- utf8mb4 + utf8mb4_0900_ai_ci 是 MySQL 8.0 最推荐组合
Unknown collation的原因是你最开始连接到了不支持该排序规则的实例- 后面重新连接 MySQL 后创建成功(db02)说明环境正确
- 推荐所有新库都统一使用 utf8mb4 0900 排序规则
- 老库 db01 使用 utf8mb3,是历史字符集,不建议继续用
872

被折叠的 条评论
为什么被折叠?



