记录一次更改MySQL编码导致的问题
序
公司项目部署的时候因为运维文档没有更新,导致在初始化数据库的时候使用的是 utf-8
的编码格式,实际上是需要使用 utf-8mb4
的编码格式
当时自己并没有注意,直到后来做有关 emoji 表情的需求的时候,才发现 utf-8
的格式根本无法存储表情字符
既然是编码出了问题,我第一想法就是直接修改数据库和表的编码格式
所以我按着 @Wonder王达 教程的指令修改了数据库编码和表的编码
然后就可以正常存储 Emoji 表情
囧
虽然这里看着问题解决了,可以存储表情了,但是后续的表情搜索却出现了问题
当通过😊这个表情进行搜索的时候,返回结果并不是含有这个表情的结果,而是只要含有 emoji 表情就都会返回
检查了前后台相关逻辑,都没有问题,最终我把目光放在了数据库上
重新建了一个 utf-8mb4 编码的数据库,重新测试收到正确结果
终
猜想:可能是一开始编码以及排序格式都是 utf-8 格式,而手动更改以后排序方式并没有变,所以出现了预期之外的返回结果
教训:尽量不要手动修改数据库相关内容,一定要确保在初始化的时候就设置好!!