MySql如何支持emoji表情

前言

编码过程中,可能都会遇到这个问题,MySql或MariaDB需要支持emoji表情。下面就把步骤分享一下,顺便也记录一下!

正文

修改.cnf文件

由于我们使用的是MariaDB的Docker镜像,因此需要在原有镜像的基础上进行再加工,即替换原有的/etc/mysql/conf.d目录下的mariadb.cnf文件。如果你不知道修改的文件具体的目录,你可以使用原始的方法,即启动一个MariaDB的Docker镜像,然后进入到该容器中,尝试查找即可。

查找步骤

1.下载镜像

docker pull mariadb:latest

2.启动

docker run -it -e MYSQL_ROOT_PASSWORD=123456 mariadb:latest

此处必须设置MYSQL_ROOT_PASSWORD。
3.进入容器

docker ps
docker exec -it ba593028e3a7 bash

根据docker ps查找到容器的ID,然后直接通过ID进入到指定容器。

修改文件

查找到mariadb.cnf文件后,将如下内容替换到指定位置:

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
character-set-client-handshake = FALSE

构建镜像

1.构建Dockerfile

FROM mariadb:latest
ADD mariadb.cnf /etc/mysql/conf.d/

2.将Dockerfile与mariadb.cnf放到同一个目录
3.打镜像

docker build -f ./Dockerfile -t mariadb-utf8mb4:latest .

4.启动新镜像,验证修改结果
通过如下命令查看修改变量的结果:

SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';

修改数据库、表、列的编码

正常情况下如果数据库设置成utf8mb4,就无需再单独修改表的编码了,因此第二步不是必须!

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name MODIFY column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

总结

数据库、表、列的编码修改一次之后,可以通过导出结构的方式导入到新的数据库中。

猜你喜欢

转载自blog.csdn.net/keysilence1/article/details/80000349