Mysql版本必须大于5.5.3,因为5.5.3 之后才出了utf8mb4
我理解的utf8mb4就是utf8的升级版,Emoji表情是4字节,而 utf8 最大只能容纳三个字节。
开始步骤:
备注:这里我用的是win为例,数据库版本为5.7.26,TP5.0.2
步骤一:
1,修改mysql的配置文件 my.ini ,(windows系统本文件在 D:\phpstudy_pro\Extensions\MySQL5.7.26(我的是D盘,大家根据自己的安装目录))
[client]
default-character-set=utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'

大家注意看一下我用红色箭头标明的哪行,windows下的my.ini文件里没有这行,需要手动添加进去character-set-client-handshake = FALSE。
执行 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; 这段sql代码是否和如下图一致:
如果不一致就把character-set-client-handshake = FALSE行添加上去。
步骤二:
执行 SHOW VARIABLES LIKE '%sql_mode%'; sql语句。
查询的结果是否包含NO_ENGINE_SUBSTITUTION 值
如果没有就执行 SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION'; sql语句,在查询就会有该值了。
步骤三:
修改TP的数据库编码方式(默认utf8),修改为:utf8mb4
备注:这是个坑,搞了好半天,不知道是我设置没对还是其他问题,直接在mysql表里插入emoji就会报错,通过php代码插入没报错。