MySql Docker 查询中文乱码
在使用 Docker 执行 MySQL 容器时,如果查询中文出现乱码,可以按照以下步骤解决问题:
设置 MySQL 字符集:
在启动 MySQL 容器时,通过环境变量设置 MySQL 的默认字符集为 utf8mb4,例如:
1 | docker run --name mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydb -d mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci |
配置 MySQL 客户端字符集:
进入 MySQL 容器后,在 MySQL 客户端中设置字符集:
1 | docker exec -it mysql mysql -uroot -p |
然后在 MySQL 提示符下执行以下命令:
1 | SET NAMES utf8mb4; |
修改 MySQL 配置文件:
你也可以通过修改 MySQL 配置文件来永久性地设置字符集。创建一个自定义的 MySQL 配置文件,例如 my.cnf:
1 | [mysqld] |
然后在启动容器时挂载这个配置文件:
1 | docker run --name mysql -v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:latest |
检查数据库和表的字符集:
确保你使用的数据库和表也设置为 utf8mb4 字符集:
1 |
|
通过上述步骤,应该可以解决在 Docker 容器中运行 MySQL 时查询中文乱码的问题。