docker mysql输入中文_docker mysql 无法输入中文

这个问题分为两个小问题

在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 bash

root@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

来源:oschina

链接:https://my.oschina.net/u/3248831/blog/4469673

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值