位置: 编程技术 - 正文

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的增删改查命令)

  • 财务往来账对账制度
  • 2020小规模纳税人印花税怎么算
  • 房产税原价包括地价吗
  • 企业对于无法收回的应收账款
  • 小企业净资产收益率
  • 转让股权原值的相关资料
  • 购买职工宿舍用品账务处理
  • 淘宝企业店铺的钱会打到哪里
  • 内账会计成本是指什么
  • 实缴年月正常补收
  • 餐饮费发票税率是多少
  • 广告公司可以开服务费吗
  • 哪些情况下,企业需要进行分销渠道设计决策
  • 汽车加油专票可以抵扣税款吗
  • 增值税各科目账务处理
  • 企业未成立工会需要交工会经费吗
  • 少付的运费如何做分录
  • 如何解决浏览器禁止访问
  • 小规模纳税人减免增值税的优惠政策
  • 购货优惠的会计科目
  • win11升级卡66
  • php中数组的常用函数及用法
  • hkc中文是什么意思
  • 股东分红缴纳个税时间
  • 房屋赠与双方办理流程
  • 漏洞 标准
  • 固定资产未提完折旧可以报废吗
  • php操作字符串函数
  • 请假扣款怎么做账
  • javascript猜数字游戏+表单
  • win11右键没了
  • php ajax
  • 房地产销售未完工产品转完工产品确认的销售收入
  • 增值税普通发票和电子普通发票的区别
  • 交易性金融资产处置时的会计核算步骤
  • 小规模所得税怎么计算公式
  • 如何查询发票领购日期
  • db2pd 命令
  • 年度奖金个税计算器
  • 结汇的汇率差异怎么算
  • 公司交的物业费计入什么会计科目
  • 现金盘盈盘亏账务处理分录
  • 预付款已经开了发票未到货要怎么做账
  • 以前年度房租付了没计提
  • 其他业务支出的借贷方向
  • 一个工程项目多个业主吗
  • 采用公允价值模式计量的投资性房地产不需要计提折旧
  • 百旺开发票清单
  • 2023年职工养老保险缴费标准
  • 旅行社代订机票便宜吗
  • 建筑工程购买的搬运设备升降平台分录
  • 影响固定资产折旧的基本因素不包括
  • 日记账自动生成
  • mysql 修改配置
  • ubuntu怎么禁用nouveau
  • windows u盘制作
  • vpengine.exe进程
  • win8玩英雄联盟fps低怎么办
  • 神之浩劫能玩吗
  • 怎么才能更好的优化我的电脑
  • Mac如何开启sip
  • win1021h2版本千万别更新
  • linux中的mv命令是什么意思
  • win7旗舰版升级win10教程
  • shell脚本 if -e
  • 安卓手机引导模式设置
  • Linux makefile 和shell文件相互调用实例详解
  • 超级硬盘数据恢复软件v2.7
  • gimp批处理
  • 谈谈关于中华文明的五个突出特性
  • Python网络爬虫出现text没有属性怎么办
  • 很不错的两款Bootstrap Icon图标选择组件
  • Javascript中Array.prototype.map()详解
  • 第三届一带一国际高峰论坛
  • 上海个体户纳税标准
  • 杭州税务稽查举报电话
  • 代理记账年费多少钱
  • 从事货物批发或零售的纳税人
  • portal
  • 银元面值有哪些种类
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设