记录一次更改MySQL编码导致的问题

公司项目部署的时候因为运维文档没有更新,导致在初始化数据库的时候使用的是 utf-8 的编码格式,实际上是需要使用 utf-8mb4 的编码格式

当时自己并没有注意,直到后来做有关 emoji 表情的需求的时候,才发现 utf-8 的格式根本无法存储表情字符

既然是编码出了问题,我第一想法就是直接修改数据库和表的编码格式

所以我按着 @Wonder王达 教程的指令修改了数据库编码和表的编码

然后就可以正常存储 Emoji 表情

虽然这里看着问题解决了,可以存储表情了,但是后续的表情搜索却出现了问题

当通过😊这个表情进行搜索的时候,返回结果并不是含有这个表情的结果,而是只要含有 emoji 表情就都会返回

检查了前后台相关逻辑,都没有问题,最终我把目光放在了数据库上

重新建了一个 utf-8mb4 编码的数据库,重新测试收到正确结果

猜想:可能是一开始编码以及排序格式都是 utf-8 格式,而手动更改以后排序方式并没有变,所以出现了预期之外的返回结果

教训:尽量不要手动修改数据库相关内容,一定要确保在初始化的时候就设置好!!