• Mysql创建视图中文乱码修改docker里的配置


    问题现象:

    创建的视图查询无数据,查看创建语句得知,where条件里的中文变成了“???”。
    在这里插入图片描述
    客户端里查询字符编码:

    show VARIABLES like '%char%';
    
    • 1

    在这里插入图片描述
    就是character_set_server导致的,它配置的竟然不是utf8,因为他默认就是这个latin1!
    踩坑记录:
    我在客户端写了个这个命令:

    set  character_set_server ='utf8';
    
    • 1

    表面上再次查询编码确实是变成utf8了,实际上根本不起作用,重启mysql服务也不会起作用!
    解决办法:
    我的这个mysql是用docker启动的,所以先登录服务器,找到容器

    docker ps -a
    
    • 1

    在这里插入图片描述
    温馨提示(踩坑记录):注意要加-a查询所有的容器,要不然如果容器Exited状态就查不到它了,比如:
    在这里插入图片描述

    进入容器里,修改my.cnf文件

    备注:Windows系统里的mysql,其配置文件叫做my.ini;Linux系统里的mysql,其配置文件叫做my.cnf,一般存放在 /etc/my.cnf或者/etc/mysql/my.cnf路径下。

    docker exec -it 2654b151f48c /bin/bash
    
    • 1

    在这里插入图片描述
    踩坑记录:一定要加上-it ,要不然没法进入容器,继续操作可就是服务器上的文件了(我这样干过,还疑惑为啥重启不生效,(ˉ▽ˉ;)…)

    修改my.cnf文件,在[mysqld]下方加上配置:

    character_set_server=utf8
    init_connect='SET NAMES utf8'
    
    • 1
    • 2

    划重点:一定要在[mysqld]下方加,要不然可能不会生效!
    原因:配置文件中的启动选项被划分为若干个组,每个组有一个组名,用中括号[]扩起来。
    参考文章:mysql配置文件的使用

    踩坑记录:
    因为容器里没有vim和vi命令,突发奇想使用了echo 命令直接往文件后面追加,也没有注意到没放在[mysqld]组下面,所以重启后配置一直不生效。

    使用echo命令的话:

    echo "xxx" >> a.txt ——把xxx追加到a.txt文件最后面
    echo "xxx" > a.txt ——把xxx覆盖到a.txt文件里
    
    • 1
    • 2

    所以最后意识到以后,使用了>才得以纠正。

    重启mysql服务
    我使用的是docker命令重启的服务,主从服务器分别重启:
    在这里插入图片描述
    再次用客户端查看编码,已经是utf8了,服务上创建的视图也没有出现乱码情况:
    在这里插入图片描述

  • 相关阅读:
    基于SOCKET编程多人聊天软件HTML+JSON报文
    RocketMq源码分析(三)--Broker启动流程
    Java中多线程的使用,龟兔赛跑
    基于单片机的智能电机保护器设计
    通用链接:AASA 验证器验证域名出现:找不到或无法识别您文件的“内容类型”标头。
    Linux镜像下载及虚拟机中安装
    C语言进阶——字符函数和字符串函数(下)
    Lua CallbackHell优化
    网页js实现的各种3D树形结构模型
    【六天案例教程】全流程TOUGH系列软件实践技术应用
  • 原文地址:https://blog.csdn.net/wysghmbb/article/details/133928370