1. 原因
docker中的mysql镜像的默认编码与中文英文冲突。
2. 解决
已构建容器,无需重启mysql
此方法只能临时修改编码,用于执行sql脚本,数据库重启后会恢复原来的编码。
- 进入mysql容器
docker exec -it 容器ID bash - 登录mysql
mysql -u用户名 -p密码 - 修改编码
依次执行一下命令
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
在执行sql脚本即可。
已构建容器,需要重启mysql
修改my.cnf配置文件即可
- 进入mysql容器
docker exec -it 容器ID bash - 修改配置文件
vi /etc/mysql/my.cnf
文件位置存在差异 可以用find命令查找下。 - 在my.cnf中添加
[client]
default-character-set=utf8
[mysqld]
default-character-set=utf8 - 重启mysql即可
/etc/rc.d/init.d/mysql restart
文件位置同样存在差异 用find查找即可。
未构建容器
对于未构建容器,在宿主机新建my.cnf,设置配置文件(密码,端口,编码等 百度一下直接复制my.cnf的需要的配置信息),构建容器的时候将宿主机的my.cnf挂在到docker中即可。