使用docker部署MySQL5.6 /8.0都出现了该问题。
一开始以为是数据的字符集问题,查看了很多文章,都是调整数据库的字符集。但是再怎么调整都不行,就开始怀疑是本地的字符集,一查看果然是的,正确设置地址字符集后就解决了。
1.
进入mysql容器内,查看本地字符集,发现不是UTF-8
# locale
LANG=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
2.生成容器时,同时指定容器的字符集 LANG: en_US.UTF-8。
一开始使用SQL_CHARSET: utf8mb4 MYSQL_COLLATION: utf8mb4_unicode_ci 设置本地字符集但是还是解决不了问题,后面使用了 LANG: en_US.UTF-8 得以解决。
version: '3.3'
services:
mysql:
image: mysql:5.7
container_name: mysql
environment:
LANG: en_US.UTF-8 ##指定运行时字符集
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: test
MYSQL_USER: user
MYSQL_PASSWORD: 123123
volumes:
- /root/mysql/data:/var/lib/mysql
ports:
- "3306:3306"
restart: always
同时在 my.cnf中指定数据库的字符集。在 [mysqld] 下加上以下内容。
[mysqld]
character-set-server=utf8 ##添加
collation-server=utf8_general_ci ##添加

1301

被折叠的 条评论
为什么被折叠?



