背景
通常我们使用Docker启动一个MySQL容器的时候可能会需要初始化一些数据,此时我们可以把初始化的脚本文件挂载到容器内部的这个目录下 /docker-entrypoint-initdb.d/
,这样容器启动的时候会自动执行这些脚本。但是因为容器自身的编码格式不是utf8,这就导致初始化之后的数据中文乱码。
解决方案
在每个初始化的脚本头部添加 /*!40101 SET NAMES utf8 */;
一行,然后执行就可以,这句话的意思是告诉mysql使用utf8字符集处理这些脚本而不是系统默认字符集。非常好用,相比其他的要修改容器字符集什么的方便多了。
/*!40101 SET NAMES utf8 */;
# 这里写上需要执行的sql脚本
网友评论