docker mysql utf8mb4 编码问题解决方法

最近在学习docker,mysql写入中文报错的问题困扰了我2,3天,在搜索了相关资料后终于找到了解决方法。原因是mysql5.7及之前的默认字符集是latain,而它是不支持中文的。

基本思路是基于官方的mysql docker image,构建一个默认字符集为utf8mb4的新镜像,后面再用到mysql的时候直接用这个新镜像。文件也可以直接在这下载,具体步骤如下:


1.创建文件utf8mb4.cnf,其内容如下,这个就是sql的配置文件,作用是把默认字符集改为utf8mb4

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

2.在utf8mb4.cnf同一目录,创建文件Dockerfile,内容如下,作用是基于mysql5.6 官方的docker镜像,把utf8mb4.cnf 复制到容器的/etc/mysql/conf.d/目录下,构建新镜像

FROM mysql:5.6
COPY utf8mb4.cnf /etc/mysql/conf.d/

3.在该目录打开shell,输入如下命令,基于上面2个文件构建新镜像,并打上标签mysql5.6_utf8mb4

docker build . -t mysql5.6_utf8mb4

大功告成,后面需要运行mysql容器时就在shell用以下的命令即可

docker run mysql5.6_utf8mb4

使用utf8mb4字符集的原因是,mysql只有它才完整支持utf8的标准,比如emoji表情。

参考资料:
mysql如何完整支持utf8
mysql docker官方镜像的文档

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐