mysql 主从 乱码_mysql乱码问题分析与解决方法

mysql乱码问题分析与解决方法

更新时间:2012年11月29日 11:18:15   作者:

开发过程中总避免不了遇到恶心的乱码,或者由乱码引发的一系列问题,这里简要介绍一下自己遇到的乱码问题和解决问题的过程中的想法以及大致的操作

开发过程中总避免不了遇到恶心的乱码,或者由乱码引发的一系列问题。出现乱码是字符集的原因一般而言和逻辑没有太大关系,也就是说整个系统大的方向没有问题,小的地方出现了漏洞,进而导致程序不能正常运行,所以说出现乱码是一件令人非常很恶心的事情。这里简要介绍一下自己遇到的乱码问题和解决问题的过程中的想法以及大致的操作,我们要学会的是如何分析问题进而解决问题,而不仅仅是照着网上的操作去一次次的解决眼前的困难,“鱼”与“渔”的区别就在于此。

交代背景:

要实现的功能很简单,用dom4J读取XML文件然后借助Spring以及Hibernate将数据写入到MySql数据库(多表)中,当然整个过程是由Spring控制事务一次性完成,有异常进行回滚。

现象:在往数据库里写数据写到一半的时候报错,大致的错误信息是:记录不是唯一。

分析和操作:

检查了一遍自己的代码,用Spring当中的HibernateTemplete保存数据,应该没有问题。

再次观察现象:好像是外键约束的问题,因为每当插入到带有外键的表的时候数据死活录入不进去。

分析和操作:

既然是外键表的问题,首先应该确定外键表中的内容是什么,于是手动改数据库隔离等级查看数据,果然里面是乱码!

问题:乱码是怎么进入数据库的?

分析和操作:

要么读取xml的时候就是乱码,要么在往数据库里写的时候变成乱码。再次断点调试测试在程序中是否乱码。

现象:在eclipse当中打印出来信息没有出现乱码问题

分析与操作:

这就说明在程序中一切没有问题,是数据库的问题。于是先改数据库链接字符串指定编码,再改数据库的编码,再次断点调试。

现象:数据库中依然是乱码,但是乱码的形式换了,之前全是“?”现在是一些乱七八糟的文字。

分析和操作:

很明显上面一系列修改编码格式的操作起作用了,只是没有修改对而已。再次检查各项的编码格式,没有发现问题

问题一度陷入僵局……

寻求帮助:秋提出别用命令窗口了,太麻烦了,用第三方客户端吧,于是换用第三方客户端,奇怪的是客户端显示没有问题!

分析和操作:

客户端没有问题命令窗口有问题,那就说明数据库里已经不是乱码,乱码可能是命令行显示的问题。设置命令行显示字符,果然显示正常!再次测试数据导入----一切OK。

思考与总结:

现象:其实在第一次修改完各项编码的时候这个问题已经算是解决了,但是由于当时自己断点调试的时候没有让程序执行完所以一直认为数据库中依然是乱码。

总结:

应该在每次调试的时候让程序跑完,将错误的上下文环境模拟出来,而不是只关注错误本身。

现象:在这里涉及到编码的地方有XML的编码、dom4j的读取编码、数据库编码、数据库连接字符串指定编码、命令行窗口显示编码。这其中哪个没有注意到问题也解决不了(这里自己没有意识到最后一个)。

总结:

全局观的意思是把握每个控制变量,从开始到结束,有意识的跳出环境来做假设。

相关文章

1a1b05c64693fbf380aa1344a7812747.png

修改MySql Server安装目录下的 my.ini 文件,在mysqld节下加入下面一行 set-variable=lower_case_table_names=0 (0:大小写敏感;1:大小写不敏感)最后重启一下MySql服务即可。2010-12-12

4f55910a645b073bc4fc65dc10dc14bd.png

这篇文章主要为大家详细介绍了CenOS6.7下mysql 8.0.22 安装配置方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2020-11-11

0ea3c7666119d5615e582f823fb3fad6.png

mysql自动备份数据库与自动删除临时文件,有需要的朋友可以参考下2013-02-02

4f96a78db829b1556ff16de21e013c7a.png

本文给大家分享的是如何使用php实现读取mysql一个库下面的所有的表table的代码,有需要的小伙伴可以参考下2016-12-12

8cc1031babc6aff2319f1c6af8544aa0.png

有相关测试数据说明从5.1到5.5+,MySQL性能会有明显的提升,具体的需要自己建立测试环境去实践下,今天我们就来操作下,并记录下来升级的具体步骤2017-07-07

0c932a99bb7b6f23c937db507070cc7b.png

在本篇文章中小编给大家整理了关于通过grep 获取MySQL错误日志信息的方法的相关知识点内容,有需要的朋友们跟着学习下。2018-09-09

cca732bf65a93ed2ec0ac80c638460fe.png

这篇文章主要介绍了浅谈MySQL使用笛卡尔积原理进行多表查询,

文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-07-07

2d9f31f2af7b675a3d153d2b7f1035a7.png

这篇文章主要介绍了MySQL MGR 有哪些优点,文中讲解非常细致,帮助大家更好的理解和学习MySQL mgr,感兴趣的朋友可以了解下2020-08-08

b452cee8ec5cd9e58ab98eba17281e59.png

这篇文章主要介绍了MySQL高可用MMM方案安装部署方法,需要的朋友可以参考下2014-02-02

f4838ec7e2d4da28e0b57d4e852dadd4.png

在本篇文章里小编给大家整理的关于MySQL慢SQL语句常见诱因以及解决方法,有需要的朋友们可以学习下。2019-08-08

最新评论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值