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

本文讲述了作者在项目部署中遇到的编码问题,起初因未更新运维文档导致使用了错误的UTF-8编码,影响了Emoji表情的存储。通过手动修改数据库编码解决存储问题后,又发现表情搜索出现意外结果。经过重新初始化utf-8mb4数据库,作者揭示了排序格式的重要性,并借此给出了数据库初始化设置的教训。
摘要由CSDN通过智能技术生成

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

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

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

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

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

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

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

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值