dockermysql无法输入中文
这个问题分为两个小问题
在mysql5.7下有两个问题,在mysql8.0以后只需解决第一个问题即可
问题1:通过docker进入mysql容器后无法输入中文
字符集问题
进入容器 查看字符集
user@ubuntu:docker4$ docker exec -it eff bash root@effcef2646f7:/#locale
LANG=
LANGUAGE=
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=
查看容器支持的字符集
root@effcef2646f7:/# locale -a C
C.UTF-8
POSIX
不能输入中文原因:
系统使用的是POSIX字符集,POSIX字符集是不支持中文的,而C.UTF-8是支持中文的 只要把系统中的环境 LANG 改为"C.UTF-8"格式即可解决问题
只要这样进入容器即可输入中文:
docker exec -it eff env LANG=C.UTF-8 bashroot@ubuntu:docker4$ docker exec -it eff env LANG=C.UTF-8 bash
root@effcef2646f7:/# 中文
注意:这样修改只是临时修改。要永久修改,需要在创建容器时在dockerfile中设置。
问题2: 通过docker进入mysql容器后,mysql控制台无法输入中文
首先保证问题1 能够解决
剩下的就是数据库的字符编码问题了,这里有两种方式解决这个问题
方式1
启动容器
docker run -p 3308:3306 --name mysql57_3 -v /home/user/mysql/docker4/conf:/etc/mysql
-v /home/user/mysql/docker4/logs:/var/log/mysql
-v /home/user/mysql/docker4/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7.31
相应配置
user@ubuntu:docker4$ cat conf/my.cnf [mysqld]
#log-bin=replicas-mysql-bin
character-set-server=utf8mb4
运行结果
user@ubuntu:docker4$ docker exec -it eff env LANG=C.UTF-8 bash root@effcef2646f7:/# 中文
bash: 中文: command not found
root@effcef2646f7:/# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 7
Type "help;" or "h" for help. Type "c" to clear the current input statement.
mysql> 中文
查看字符集
mysql> show variables like "%char%";+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
方式2
启动容器
docker run -p 3308:3306 --name mysql57_3 -e MYSQL_ROOT_PASSWORD=root
-d mysql:5.7.31
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
因为没有挂载数据卷,所以此处没有设置其他配置
以与方式1相同的方式进入容器,也能解决两种情况下不能输入中文的问题
字符集同方式1
还是方式1比较好,管理数据更加方便。
参考连接https://cloud.tencent.com/developer/article/1500399
以上是 dockermysql无法输入中文 的全部内容, 来源链接: utcz.com/z/519082.html