【他山之石】mysql编码问题总结
2024-09-08 05:39:34
有些问题可能比较基础,但是没有经过系统学习还是可能会出错,记录下。
这次是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.
最新文章
- linux定时备份mysql并同步到其它服务器
- 【Python】-【类解析】--【脚本实例】
- HDOJ 1711 Number Sequence
- c# Sqlite帮助类
- QT程序探测所需DLL,静态连接和打包
- z-index无效问题的解决方法
- Hibernate 主键策略
- 初学AngularJS
- Android SharedPreference 数据存储
- DedeCMS标签 PHP判断语句写法
- 关于javascript在OJ系统上编程的注意事项
- JSESSIONID的简单说明
- 遇到短信轰炸,别人换ip调你的短信接口怎么办
- Nginx使用教程(七):使用Nginx缓存之proxy cache
- 【清北学堂2018-刷题冲刺】Contest 6
- vCenter 异常关机后无法开启ESXi虚拟机的处理.
- Java知多少(64)线程死锁
- 在input文本框中存入对象格式的数据
- Python 常用 PEP8 编码规范
- 重载和const参数
热门文章
- HDU-1257_最少拦截系统
- deepin 15.11 升级docker-ce 18.01到19.03.1,升级docker compose 1.23到1.24.1
- part10.2-字符设备驱动模型
- ccf-201703-4-地铁修建
- js获取dom节点
- vue 组件评论 的同时进行刷新
- Python--day46--分组(看了别人博客掌握的)
- 同一个页面 andriod和ios设备上的按钮颜色不一致
- 中和IOS七层架构和TCP/IP四层架构的五层架构
- tensorflow在文本处理中的使用——词袋