This website requires JavaScript.

修改mysql配置,让mysql支持emoji表情

2020年07月17日 11时48分 字数 1618 阅读 9 喜欢(0) 评论(0) 标签 mysql 数据库

这段时间与微信整合的次数比较多,经常发现用户昵称里面带有“A🌺 玲玲 🌺”这样的emoji表情,会导致数据插入mysql失败,而我的数据库的编码是UTF-8的,后来查了资料才知道UTF8编码在mysql中只占了三个字符,而一个emoji表情占了四个;所以才会导致数据插入失败。

一般出错的时候,服务器数据插入mysql时会出现如下信息:

Incorrect string value: '\xF0\x9F\x98\x84'

我的本机开发环境是mac,服务器是centos,解决起来是差不多的,我梳理了一下步骤,我看了有很文章写法都不一样,我自己下午才解决过,所以写的细一些。

  • 修改数据库配置,改动的四个地方如下
[client]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4
  • 修改原有的数据库和表配置
    ` sql
    mysql> ALTER DATABASE 你的数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
    Query OK, 1 row affected (0.01 sec)

mysql> ALTER TABLE 你的数据库名.你的数据库表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0

.
.
.

没有错,你每张表都必须要改,所以下次做项目

- 重启数据库,这里就不提供命令了。请根据自己的情况操作。

- 去掉数据库连接字符串多余的东西

``` yml
jdbc:mysql://localhost:3306/blog?createDatabaseIfNotExist=true&autoReconnect=true&useUnicode=true&serverTimezone=Asia/Shanghai
#去掉了这个 &characterEncoding=utf-8

根据以上步骤即可完成数据库插入emoji的配置,有几个细节点:

  • 数据库my.cnf的配置和数据库表、数据配置并不需要严格的顺序,打乱顺序也是可以的。
  • 有的教程上说的每个字段都要改,我这边没有这么做,我在Navicat里看到数据表如下图所示了,我就没有执行字段的修改,测试证明是可行的。
看标红的地方
  • 如果你的数据库没有改过任何配置,默认是laitn1的字符串。那么上面说的多余的连接字符串是不能去的。去了会造成乱码。
  • 如果你胆子足够大,在生产环境也是可以改的,但是不建议这么做。我之所以说出来是因为我就这么干了,也是因为我数据比较少,且不是特别重要,我才敢这么干。
  • utf8mb4向前兼容了utf8,所以转换的时候不会有问题。

隔壁老易:一个专业的技术人员,专注技术与商业结合变现!

好了,文章到此结束,喜欢的朋友麻烦点一下关注,评论+转发。您的支持是老易最大的动力!

文末有老易的微信公众号二维码,喜欢的朋友们麻烦关注一下!

赞赏支持

微信赞赏码

支付宝赞赏码

相关推荐

暂无推荐文章

扫码关注”隔壁老易“