在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平臺顯示正常。
結束。