解决docker启动mysql无法输入中文以及中文不显示或乱码问题

前言

我在使用MySQL时,遇到了两个问题。一是在插入中文数据时,无法输入中文。二是在select的时候,查出来的中文数据是空的(因为插入时为空),然后我就使用Navicat连接数据库添加了中文数据,再到docker中查询,就发现了乱码问题。
在这里插入图片描述

排查原因

乱码一般都是因为编码引起的,所以我们来查一下数据库的编码

show variables like '%character%';

在这里插入图片描述
可以看到 docker 启动的 mysql 这里有的编码是 latin1,我们先把这里设置成utf8.

解决方式

1 无法输入中文

使用如下命令进入容器,但这只是临时的

docker exec -it mysql env LANG=C.UTF-8 /bin/bash

2.1 统一客户端与连接编码为utf8

登入数据库执行以下命令

set character_set_client = utf8; 
set character_set_results = utf8; 
set character_set_connection = utf8;
-- 或者使用下面的命令同时统一编码(以下和以上命令选择一种执行即可,效果一样)
set names ‘utf8’;

在这里插入图片描述

2 修改mysql的配置文件

  • 退出数据库,修改my.cnf文件
    在这里插入图片描述

  • 出现bash: vim: command not found提示,需要安装一下vim,使用如下命令

    apt-get update
    apt-get install vim -y
    

    然后重新执行vim命令即可

  • 修改文件内容

    [mysqld]
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    datadir         = /var/lib/mysql
    secure-file-priv= NULL
    [mysql.server]
    default-character-set = utf8
    [mysqld_safe]
    default-character-set = utf8
    [client]
    default-character-set = utf8
    

    在这里插入图片描述

  • 重启mysql

    # exit退出容器
    docker restart mysql
    
  • 登录mysql查看是否修改成功

    docker exec -it mysql /bin/bash
    mysql -u root -p
    

    在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值