MySQL使用utf8mb4字符集存储emoji表情

Mysql 发表时间:2021-11-23 10:17:57 作者:梁子亮 浏览次数:1190

自部署mysql的更改

1、查看一下现在数据库的结构如何

show variables like '%character%';

2、一般情况下除character_set_filesystem外其余都显示utf8,此时需要分别把库、表、字段三个全部都改为utf8mb4

如下SQL语句所示,分别将dbsdq库、tt2表、tt2表中的c2列修改为utf8mb4字符集(参考阿里云:https://help.aliyun.com/document_detail/41706.htm?spm=a2c4g.11186623.0.0.57e6fb03UQe1ZK)

#更改数据库结构
alter database dbsdq character set utf8mb4 collate utf8mb4_unicode_ci;
use dbsdq;
#修改表
alter table tt2 convert to character set utf8mb4 collate utf8mb4_unicode_ci;
#修改列
alter table tt2 modify c2  varchar(10) character set utf8mb4 collate utf8mb4_unicode_ci;

如下SQL语句所示,分别将dbsdq库、tt2表、tt2表中的c2列修改为utf8mb4字符集(参考177服务器)

#更改数据库结构
mysql -uroot -p; // 输入密码后
ALTER DATABASE macau_pocket CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci
#修改表
use macau_pocket;
ALTER TABLE v_wechat_user_copy CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
#修改列
ALTER TABLE v_wechat_user_copy CHANGE nickname nickname VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

3、或者使用Navicat分别把数据库、表、列字段更改为utf8mb4也行

4、如有必要重启一下mysql

service mysql restart

5、另外,还需要把tp5.1的database.php,'charset' => 'utf8mb4'

// 数据库编码默认采用utf8
'charset'         => 'utf8mb4',


Polar Db mysql的更改

1、若使用的是阿里云Polar Db,则操作也是类似的,先查看以下命令,保证character_set_server参数设置为utf8mb4

show variables like '%character%';

2、若character_set_server不是utf8mb4,则登录polar db设置参数为utf8mb4,注意可能需要重启数据库才能生效

3、通过sql语句或者Navicat等工具把库,表,字段修改为对应的utf8mb4即可(参考阿里云:https://help.aliyun.com/knowledge_detail/41702.html?spm=5176.21213303.J_6704733920.22.45d43edawDjuW8&scm=20140722.S_help%40%40%E7%9F%A5%E8%AF%86%E7%82%B9%40%4041702._.ID_help%40%40%E7%9F%A5%E8%AF%86%E7%82%B9%40%4041702-RL_utf8mb4UNDgeneralUNDci-OR_main-V_2-P0_4)

4、如有必要重启一下mysql

上一篇   php-7.2.18安装