程序员阿宾的故事:
唉,今天使用 show variables like'character%'
命令查看了下数据库编码,发现好多有关的编码,一时间不知道要修改哪一个,于是乎一天啥也没干,刨根问底,弄清了各个属性的编码的含义,第二天就被老板开了。
一、查看各个变量的命令
MySQL命令行输入show variables like'character%
得到如下结果:
二、各个变量的含义
- character_set_client:客户端来源数据使用的字符集,也就是客户端发过来的查询语句使用的什么字符集
- character_set_connection:MySQL接受到用户查询后,按照character_set_client将其转化为character_set_connection设定的字符集。
- character_set_results:查询结果编码的字符集
- character_set_database:当前选中数据库的默认字符集
- character_set_server:默认的内部操作字符集
- character_set_system:系统元数据(字段名等)字符集
三、离职交接
临走我把上面的写成交接文档给了老板,自己的笔记上我就写了几句话
1、mysql提供了四个等级的默认字符集以及比较规则,分别是服务器、数据库、表、列级别的
2、character_set_server决定了数据库服务器的默认编码;
3、character_set_database决定了新建数据库的默认字符集;
数据库的字符集又决定了新建表的默认字符集;
表的字符集又决定了字段的默认字符集;如果没有通过DEFAULT CHARACTER SET=xxx来改变表的字符集,则新表就使用character_set_database指定的字符集;
四、我脑子里剩下的
到最后,我脑子里就剩一句话了,character_set_database 最有用,修改它就完事了。
alter database boss_authmanager character set utf8;
五、面试
若干天后,我去新公司面试,面试官问到这个问题,我一句话就说完了,面试官让我滚……