位置: 编程技术 - 正文

MySQL存储数据乱码的问题解析(mysql数据存在内存还是硬盘)

编辑:rootadmin

推荐整理分享MySQL存储数据乱码的问题解析(mysql数据存在内存还是硬盘),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mysql存储量,mysql存储量,mysql 存储数据,mysql数据乱码怎么解决,mysql 存储数据,mysql 存储数据,mysql 存储数据,mysql数据乱码怎么解决,内容如对您有帮助,希望把文章链接给更多的朋友!

mysql的字符集设置有多个层级,在mysql中存储中文,如果不能正确设置字符集,很容易出现数据乱码。今天就有一个用户反馈他数据库中的数据下午1点多开始出现了乱码。在这里,我分享下具体问题的排查过程,以及解决的办法。

(1) 排除客户端设置导致的显示乱码

如果用户设置的mysql character_set_client跟客户端显示的字符集不一致,很容易导致中文数据乱码。

设置session字符集为utf8:set names utf8,设置客户端显示字符集为utf8,然后从表中select出有乱码的数据。

上面显示,在character_set_client跟客户端的字符集一致的情况下,还是出现了乱码,这个排除是用户显示字符集设置不对的可能。下面通过hex(item_title)列来查看这个列在底层的存储字符集是否正确。

通过上面的查询,可以确认这个数据乱码不是显示问题,而是存储的数据内容本身就是错误的。

(2) 定位存储乱码原因

1> 用户确认这个记录插入时能够正常显示,但是后来update之后,数据就乱码了。根据这个信息到binlog中查找更改正确内容对应的update语句。

MySQL存储数据乱码的问题解析(mysql数据存在内存还是硬盘)

上面的binlog日志显示这个sql将原来数据库中正确的内容,更新成一堆乱码。所以导致数据库中的存储数据乱码。

从binlog日志可以看出在更新时,是用latin1的方式写入到数据库中。Update后面的set语句中item_title字段的内容是乱码的,所以确认是导入数据源本身内容有问题,从而导致更新后的数据乱码。跟用户确认这个update语句的更新内容,是先从库中load 出来,后拼接成的update sql,所以怀疑load出来的数据就已经是乱码了,然后直接用这个错误的数据更新原来正确的数据,导致所有的正确的数据乱码。所以,需要确认这个update导入的数据源是否正确,即load出来的数据是否是正确的。

2> 导入数据源确认

开启实例的全日志开关,然后比对日志,从上面update语句对应的连接运行的sql中查找数据导出语句,以及对应的字符集设置。

从上面的日志内容可以看出,这个连接建立后没有进行任何字符集的设置,直接从数据库中将内容select出来。在mysql中,如果没有设置session级别的字符集,那么使用默认的配置,配置如下:

即输出会按照latin1的格式显示。在默认字符集的配置下,手动运行SELECT `main_table`.* FROM `promo_item` AS `main_table` WHERE promo_item_id ='' 命令,可以发现,在character_set_results 设置为latin1的情况下,输出结果中的item_title确实为一堆问号。

由于latin1不能正确表示中文字符,所以显示为一堆问号,用户直接将这个内容update 原来正确的内容,所以导致存储内容乱码。

(3)小结

在使用mysql存储中文字符时,需要注意以下几点:

1> 确认更新的数据源同mysql 的session级别的字符集保持一致,Session级别的字符集可以用set names charset_name来设置。

2> 如果要正确显示中文,需要将character_set_results设置为GBK或是utf8。同时,客户端的显示字符集需要跟character_set_results的配置一致。

MySQL的增删查改语句用法示例总结 1.创建列altertabletablenameaddcolnametypenotnulldefault'0′;例:altertablemmanapp_mmanmediaaddappid_idintegernotnulldefault;2.删除列altertabletablenamedropcolumncolname;例:altertablemma

在C#和MySQL中存取中文字符时避免乱码的方法 当用到socket来进行网络程序开发时,大多数情况下会遇到中文字符的发送与接收,这时若对发送的字符串用默认的方式进行处理,则一般会得到一堆乱

详细解读MySQL中的权限 一、前言很多文章中会说,数据库的权限按最小权限为原则,这句话本身没有错,但是却是一句空话。因为最小权限,这个东西太抽象,很多时候你并

标签: mysql数据存在内存还是硬盘

本文链接地址:https://www.jiuchutong.com/biancheng/347314.html 转载请保留说明!

上一篇:分析一个MySQL的异常查询的案例(mysql在数据分析中的作用)

下一篇:MySQL的增删查改语句用法示例总结(mysql的增删改查命令)

  • 怎么查历年
  • 工地上用的辅材
  • 企业所得税上个月没有计提本月怎么计提
  • 发票遗失如何入账
  • 计入损益的税
  • 长期投资算资产负债表吗
  • 税款追征期起算点 增值税重新计算
  • 社保扣款上月没扣本月如何做会计处理?
  • 政府补助结转是什么科目
  • 一般纳税人增值税优惠政策
  • 应付账款扣款怎么做账
  • 工程承建方给予的工期奖励如何做账?
  • 餐饮招待怎么入账
  • 工厂采购原材料销售给外贸公司
  • 劳动合同解除和终止的经济补偿
  • 停车场收入怎么做账
  • 其他收益纳税
  • 一般纳税人预缴税款几个点
  • 可以开运费发票的单位有哪些
  • 资金账簿印花税滞纳金怎么算
  • 接受捐赠收入要计入企业所得税应纳税所得额吗
  • 专票开票信息不填省份可以吗
  • 厂房出租开发票选择什么税收分类编码
  • 供应商已注销欠的发票怎么办?
  • 增值税发票跨年了还能用吗
  • 我们无法创建新的分区,也找不到现有的分区 贴吧
  • carrier profile
  • 研发产品对外销售研发材料不得加计扣除分录
  • 王者荣耀中张飞的台词
  • 顺丰充值的钱可以退吗
  • Proxmox ve(PVE) 显示CPU和硬盘温度、UPS信息
  • autotun.inf
  • 公网访问内网主机
  • uniapp使用高德地图创建多边形
  • vue3获取当前vue实例
  • 最有艺术气质的动物
  • php use function
  • 今日元宵节图片
  • 员工报销个人抬头的医疗费打款备注写什么
  • thinkphp3.x中display方法及show方法的用法实例
  • 卷积神经网络结构
  • php邮箱验证示例怎么写
  • es6面试题promise
  • 前期认证相符且不符合
  • php数据库网址
  • 印花税减半征收减免性质代码
  • 阿里云ecs重装
  • 本月损益类未结转为零的一级科目6603
  • 机动车组织机构代码证更改
  • 甲公司购入一台不需要安装
  • 附加税减免额怎么算
  • 内账会计成本是什么意思
  • sql server 内存管理
  • 公司的货款直接转给股东个人了,该怎么转到公司
  • 年末未分配利润计算公式
  • 库存商品期末余额怎么计算
  • 少数股东权益贷方表示什么意思
  • 企业购买设备抵税
  • 建筑公司挂靠单位的财务处理是?
  • 写字楼物业费按照什么面积
  • 工伤保险待遇是否属于劳动争议
  • 日用品增值税率是多少
  • 没有水电费发票可以入账吗
  • 设备融资租赁会上征信吗
  • mysql千万级分页优化
  • windowspe安装win7
  • win10怎么把中文系统改成英文
  • win7旗舰版系统激活密钥
  • win10语音控制电脑
  • xcode a build only device
  • 如何使用jquery绑定事件
  • js观察者模式和发布订阅
  • unity做安卓app
  • ztree getnodebytid
  • JavaScript+html5 canvas绘制的小人效果
  • 陕西宝鸡国税人才招聘
  • 个人所得税申报是什么意思
  • 个税系统崩溃
  • 徐州市税务局第三稽查局
  • 应缴纳资源税税额怎么计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设