当前位置: 首页 > news >正文

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

问题现象:

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

show VARIABLES like '%char%';

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

set  character_set_server ='utf8';

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

docker ps -a

在这里插入图片描述
温馨提示(踩坑记录):注意要加-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

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

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

character_set_server=utf8
init_connect='SET NAMES utf8'

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

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

使用echo命令的话:

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

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

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

http://www.lryc.cn/news/199336.html

相关文章:

  • uniapp checkbox样式失效,选中框选中按钮不显示
  • 机器学习-最小二乘法
  • Linux文件管理与用户管理
  • java中什么是不可变类
  • 使用Perl和WWW::Mechanize库编写
  • 智荟雄安,创想未来 | 竹云董事长受邀出席雄安新区2023软件和信息技术服务业创新发展论坛并作主题演讲
  • 【设计模式-1】UML和设计原则
  • 【数据结构】——二叉树的基础知识
  • 日常bug汇总
  • C#使用PPT组件的CreateVideo方法生成视频
  • 数字化体系如何帮助企业拓展裂变增长渠道?数字化营销体系构建?
  • 关于vant 的tabbar功能
  • :style动态绑定,但只要页面发生变化就会执行一次方法
  • 文件的逻辑结构(顺序文件,索引文件)
  • suricata匹配从入门到精通(五)----二次开发保护规则库
  • 软件测试肖sir__python之ui自动化定位方法(2)
  • 【JVM面试题】JVM分代年龄为何是15次?能设置为16吗?
  • java三层架构/表现层-业务层-持久层
  • 视频监控这样做,简单又高效!
  • 掌握 Go 的计时器
  • 嵌入式软件开发笔试面试
  • 【Qt高阶】Linux安装了多个版本的Qt 部署Qt程序,出包【2023.10.17】
  • OpenGL简介
  • 持续集成工具jenkins操作
  • 使用BurpSuite抓取HTTPS接口
  • 移动硬盘被格式化了如何恢复数据?四步教你如何恢复
  • 基于变电站自动化系统中的安全措施分析及应用
  • 18、监测数据采集物联网应用开发步骤(12.3)
  • 什么是Mybatis?Mybaits有哪些优点?
  • 点云从入门到精通技术详解100篇-基于3D点云的曲面文字检测(续)