记一次mysql中文字符乱码的问题排查

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

今天开发反应两样的程序往一个库里面插入数据正常,往另外一个库里面插入数据有乱码。第一反应就是两个数据库关于字符集的配置不一样。


在两个库分别查看参数:

show variables like "%char%";

+--------------------------+------------------------------------------+

| Variable_name            | Value                                    |

+--------------------------+------------------------------------------+

| character_set_client     | utf8                                     |

| character_set_connection | utf8                                     |

| character_set_database   | utf8                                     |

| character_set_filesystem | binary                                   |

| character_set_results    | utf8                                     |

| character_set_server     | latin1                                   |

| character_set_system     | utf8                                     |

| character_sets_dir       | /usr/local/mysql/share/charsets/ |

+--------------------------+------------------------------------------+


>show variables like "%char%";

+--------------------------+------------------------------------------+

| Variable_name            | Value                                    |

+--------------------------+------------------------------------------+

| character_set_client     | utf8                                     |

| character_set_connection | utf8                                     |

| character_set_database   | utf8                                     |

| character_set_filesystem | binary                                   |

| character_set_results    | utf8                                     |

| character_set_server     | utf8                                     |

| character_set_system     | utf8                                     |

| character_sets_dir       | /usr/local/mysql/share/charsets/ |

+--------------------------+------------------------------------------+


可以看到character_set_server的参数配置不一样,于是将有问题的那个库配置成utf8,开发再次测试的时候表示还有乱码问题,这时想起来校验字符集没有改,于是分别查看两边校验字符集的差异:

>show variables like "%coll%";

+----------------------+-------------------+

| Variable_name        | Value             |

+----------------------+-------------------+

| collation_connection | utf8_general_ci   |

| collation_database   | utf8_general_ci   |

| collation_server     | latin1_swedish_ci |

+----------------------+-------------------+


>show variables like "%coll%";

+----------------------+-----------------+

| Variable_name        | Value           |

+----------------------+-----------------+

| collation_connection | utf8_general_ci |

| collation_database   | utf8_general_ci |

| collation_server     | utf8_general_ci |

+----------------------+-----------------+

可以看到collation_server 参数设置不一致,于是把这个参数也改成了utf8,再次测试的时候数据显示正常。


mysql支持多个层次的字符集设置:

服务层(server)、数据库层(database)、数据表(table)、字段(column)、连接(connection)、结果集(result)

优先级:server > database > table > column

为了避免出现因字符不一致导致的中文乱码的问题,最好就是将字符集全部设置成一样的。


另外提一下skip-character-set-client-handshake这个参数,可以通过开启这个参数来过滤客户端设置的字符集


本文转自 emma_cql 51CTO博客,原文链接:http://blog.51cto.com/chenql/1975678

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
Java 最常见的面试题:mysql 问题排查都有哪些手段?
Java 最常见的面试题:mysql 问题排查都有哪些手段?
|
4月前
|
关系型数据库 MySQL 数据库
解决MySQL无法输入中文字符的问题
解决MySQL无法输入中文字符的问题
67 0
|
5月前
|
SQL 存储 关系型数据库
mysql 利用 performance_schema 排查 qps 过高过程记录
mysql 利用 performance_schema 排查 qps 过高过程记录
82 0
|
5月前
|
Java 关系型数据库 MySQL
记一次mysql线上问题排查
背景是这样的,我们有个系统每天都会调起多个定时任务,首先quartz每分钟会调起一次检查时间的任务,如果发现时间到达设定的任务执行时间,java代码会向数据库里写入一条记录,然后有另外一个系统就会根据这条记录执行相应的任务,有天有同事反馈说有条定时任务没执行。。
44 0
|
9月前
|
关系型数据库 MySQL
MySQL实战基础知识入门(5):命令行汉字中文输出乱码的解决方案
MySQL实战基础知识入门(5):命令行汉字中文输出乱码的解决方案
56 0
|
9月前
|
SQL 监控 Oracle
MySQL发现sql语句执行很慢排查建议
MySQL发现sql语句执行很慢排查建议
394 0
|
9月前
|
SQL 关系型数据库 MySQL
mysql线上连接超时和字段过长排查思路
mysql线上连接超时和字段过长排查思路
|
10月前
|
存储 关系型数据库 MySQL
【Mysql】一学就会!一劳永逸的解决插入中文字符时的报错
【Mysql】一学就会!一劳永逸的解决插入中文字符时的报错
91 0
|
11月前
|
存储 SQL 缓存
mysql的启动关闭原理和实战、及常见的错误排查
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
369 0
|
SQL 关系型数据库 MySQL