MySQL修改数据库和数据表的字符集以及校对规则
概况
问题
我一般新建数据库时,字符集选用utf-8
,校对规则选用utf8_general_ci
然而最近我发现如果存放的数据里面有Emoji表情符号
时,会报错无法把数据添加到数据库中
原因
我查了一下utf-8字符集不支持存入Emoji表情符号,要存入Emoji表情符号则要使用utf8mb4
字符集,然后校对规则使用utf8mb4_unicode_ci
,所以一开始创建数据库时推荐使用utf8mb4
字符集
其它说明
MySQL数据库的字符集以及校对规则和数据表的关系:
表默认使用数据库的字符集和校对规则,也可以选择其它的(可以和数据库的不一样),不过建议弄成一样的
修改过程
先备份数据库
在进行任何修改之前,请确保对数据库进行备份,以防止意外数据丢失
选中要操作的数据库
1 | USE 你的数据库名称; |
查看字符集和校对规则
修改之前先看一下当前数据库是什么字符集和校对规则
1 | #查看字符集 |
开始修改数据库
要将数据库字符集修改为 utf8mb4,并使用 utf8mb4_unicode_ci 校对规则,可以执行以下命令,然后再使用上面命令看修改后的字符集和校对规则
1 | ALTER DATABASE 你的数据库名称 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci; |
修改数据表
修改数据库的字符集和校对规则后,数据表的字符集和校对规则不会随之变化,我们可以使用下面命令修改
1 | ALTER TABLE 你的数据表名称 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; |
重启MySQL服务
一般不需要修改,我修改数据库的字符集和校对规则后不重启也生效了,如果不生效的话可以尝试重启MySQL服务
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeDao's Blog!
评论