mysql容器乱码问题
Posted 巴州夜雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql容器乱码问题相关的知识,希望对你有一定的参考价值。
在docker-compose.yml文件中定义mysql导入utf-8的万国码
services:
mysql:
image: mysql:5.7
# command: [\'--character-set-server=utf8mb4\', \'--collation-server=utf8mb4_unicode_ci\']
volumes:
- ./data/docker/mysql:/var/lib/mysql
- ./mysql/:/docker-entrypoint-initdb.d/
- ./conf/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
- ./sqlfile:/app/sqlfile
environment:
- "MYSQL_DATABASE=apigateway-ai"
- "MYSQL_USER=appuser"
- "MYSQL_PASSWORD=123456"
- "MYSQL_ROOT_PASSWORD=root"
ports:
- "3306:3306"
restart: always
logging:
driver: "json-file"
options:
max-size: “1g”
启动spring Boot框架后,web平台显示乱码。
进入mysql容器,查看字符集mysql> show variables like \'%char%\';
发现character_set_client和character_set_server等字符集仍然不是utf-8;
解决:在宿主机的cnf文件中定义字符集default-character-set = utf8mb4,再映射到容器里,同时取消compose文件中导入utf-8的command命令。
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[client]
default-character-set = utf8mb4 #定义字符集
[mysql]
default-character-set = utf8mb4 #定义字符集
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
lower-case-table-names=1 #解决数据库读取区分大小写问题
重启docker后,web平台显示正常。
结束。
以上是关于mysql容器乱码问题的主要内容,如果未能解决你的问题,请参考以下文章