有些问题可能比较基础,但是没有经过系统学习还是可能会出错,记录下。

这次是mysql的编码问题。

背景是部署新的测试环境,给了一台服务器还有在另一个环境下的mysql,配置过程中发现mysql编码有问题,查看结果如下

发现character_set_client和character_set_connection以及character_set_results都是latin1(也就是iso-8859-1),这显然不行。于是想到修改数据库服务器上的my.cnf文件,在[client]下增加了一行

default-character-set=utf8 

发现还是不行,一直不理解问题出在哪里,后来才发现自己的愚蠢,问题不是出在mysql服务端的配置,而是客户端的配置。

比如执行 mysql -h test-db.com -u test -p的时候,决定此次连接的编码的一方是当前mysql客户端的配置文件my.cnf而不是mysql数据库服务端的配置文件!!!

这次经过修改之后终于正常了。之前还找过dba的同事,感觉脸火辣辣的,这酸爽╮(╯_╰)╭

顺便回顾下各个属性的意义吧。

 character_set_client: MySQL服务器假定client传输过来的数据的编码.(客户端决定)
character_set_connection: MySQL服务器接收到数据时,将其转换成哪种编码.(客户端决定)
character_set_results: MySQL服务器响应给客户端的数据采用哪种编码.(客户端决定)
character_set_system: 元数据采用的编码(表名, 列名等).
character_set_server: MySQL服务器默认的数据编码方式.
character_set_database: MySQL数据库默认的数据编码方式.
character_set_table: MySQL数据库中表的默认数据编码方式.
character_set_column: MySQL数据库中表的列(字段)默认的数据编码方式.
MySQL默认的"服务器/数据库/表/列"的编码方式,优先级由低到高, 表的编码方式可覆盖数据库的编码方式,列(字段)的编码方式可覆盖表的编码方式.
 
MySQL配置文件中的"default-character-set=utf8"相当于"set names utf8".

MySQL在执行操作前,先把接收到的数据从character_set_client转换为character_set_connection,
然后再把character_set_connection转换为与内部数据库相匹配的字符集,
最后执行完操作后,再把返回的结果转换为character_set_results.

【他山之石】mysql编码问题总结的更多相关文章

  1. mysql编码的那点事

    Mysql编码问题  在php页面可以向mysql插入英文字符,但就是不能插入中文字符,在cmd客户端也可从插入,这是困扰我两天的问题. 在网上找了很多资料,最终确定了是字符编码这个地方出现了问题,首 ...

  2. Linux(Ubuntu)使用日记------Mysql编码(utf-8)的设置

    Mysq版本:5.7.21 操作系统:Linux(Ubuntu) 整个操作的基本思路如下(包括问题的解决思路,想要直接解决问题的可以先看最后的命令总结) 检查mysql编码 找到Mysql的配置文件 ...

  3. php mysql 编码问题

    php mysql 编码问题 问题: PHP从数据库中读取数据,并echo出来,数据中文显示正常:但是echo出新定义的中文字符串,新定义的字符串会乱码. 由此可能是数据库中提取出来的中文编码和php ...

  4. linux上设置mysql编码

    linux下设置mysql编码 linux下设置mysql编码 首先查找MySql的cnf文件的位置: [root@flyHome gaoxiang]# find / -iname '*.cnf' - ...

  5. MYSQL进阶学习笔记一:MySQL编码设定,会话变量和全局变量!(视频序号:进阶_1-3)

    知识点一:MySQL编码设定(1-2) 服务器编码设定: 查看MySQL服务器端的编码格式: SHOW VARIABLES LIKE ‘char%’; 设定编码格式: SET NAMES ‘utf8’ ...

  6. 关于mysql编码问题

    1 查看MySQL编码 SHOW VARIABLES LIKE 'char%';

  7. 配置mysql 编码

    配置mysql 编码 [client]default-character-set=utf8mb4 default-storage-engine=INNODB [mysql]default-charac ...

  8. mac mysql 编码配置

    mac mysql 编码配置 (mysql目录下没有my.cnf) 想要修改编码发现自己的/usr/local/mysql/support-files里面根本没有my.cnf 安装方式是去mysql官 ...

  9. mysql编码设置

    一:mysql字符集 mysql的字符集支持(Character Set Support)有两个类型:字符集(Character set)和连接校对(Collation).对于字符集的支持细化到四个层 ...

随机推荐

  1. MySQL统计同比环比SQL

    大体思路: MySQL没有类似oracle方便的统计函数,只能靠自己去硬计算:通过时间字段直接增加年份.月份,然后通过left join关联时间字段去计算环比.同比公式即可 原始表结构: 求同比SQL ...

  2. 1176. Two Ends

    题目链接地址:http://soj.me/1176 题目大意:两头取数.第一个人随机取,第二个人用贪婪算法(每次都取大的),求两人取数在第一个人赢的情况下的最大分差.使用贪婪算法时,如果左右两边相等, ...

  3. Pytorch的网络结构可视化(tensorboardX)(详细)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/xiaoxifei/article/det ...

  4. oracle函数 SOUNDEX(c1)

    [功能]返回字符串参数的语音表示形式 [参数]c1,字符型 [返回]字符串 [说明]相对于比较一些读音相同,但是拼写不同的单词是非常有用的. 计算语音的算法: 1.保留字符串首字母,但删除a.e.h. ...

  5. sspanel 常用审计规则

    规则 禁用 BT 防止版权争议 BitTorrent protocol 数据包明文匹配 禁止 百度高精度定位 防止IP与客户端地理位置被记录 (api|ps|sv|offnavi|newvector| ...

  6. 设置 Tomcat 的JVM运行内存

    win7,64位: Tomcat7.0.5:jdk1.7: 情况一:Tomcat注册成系统服务,如何修改JVM运行内存? WINDOW 64位 , cmd打开注册表(regedit) HKEY_LOC ...

  7. ORACLE 创建pfile和spfile

        使用服务器参数文件spfile创建文本参数文件pfile:1,SQL> create pfile from spfile="/u01/app/oracle/product/9. ...

  8. Getting started with the basics of programming exercises_4

    1.编写一个删除C语言程序中所有的注释语句的程序.要正确处理带引号的字符串与字符串常量,C语言中程序注释不允许嵌套. #include<stdio.h> void rcomment(int ...

  9. poj 3528 Ultimate Weapon (3D Convex Hull)

    3528 -- Ultimate Weapon 一道三维凸包的题目,题目要求求出三维凸包的表面积.看懂了网上的三维凸包的代码以后,自己写的代码,跟网上的模板有所不同.调了一个晚上,结果发现错的只是数组 ...

  10. poj 1787 Charlie's Change (多重背包可作完全背包)

    Charlie's Change Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 3792   Accepted: 1144 ...