开发机链接公司数据库做查询的时候,发现查询结果中有中文的地方都变成了?????,为了解决这个问题,去网上随便搜个了贴在来看,结果发现自己的开发机有一系列奇葩的问题。。。
1、首先输入 mysql -hX.X.X.X -Pxxxx -uname -pXXXXXXX连接了公司的数据库,然后输入 show variables like 'character_set%';
这条语句是用来查看字符集编码格式,发现我的编码格式中有好多都不是utf8,这个就是问题的根源。
2、接下来就是解决这个问题,其实这个问题很简单,只需要再mysql命令行中输入几条sql命令就可以:
set character_set_database=utf8;
set character_set_server=utf8;
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_results=utf8;
这几条命令用完之后再重新查询一遍,中文就已经可以显示了。但是如果以后重启了mysql服务,那么还需要重新用这几个命令,否则还是变成了默认的字符集编码格式。于是我决定再/etc/my.cnf中做一个统一的配置。具体步骤:
vi /etc/my.cnf
在[mysqld]中添加一行character_set_server = utf8
在[client]中添加一行default-character-set=utf8
(如果发现配置文件中没有mysqld或者没有client,可以自己加一个)
添加之后只要重启mysql服务就解决了
service mysqld stop
service mysqld start
3、但是到了重启mysql服务这一步时,我的开发机中的一大堆问题
首先是service mysqld stop命令报错,提示没有service服务,于是用yum list installed|grep mysql-server
命令查看我的环境是不是缺少文件,结果yum也报错。。
那么先解决yum的问题。
yum报错原因:根据报错信息提示,是yum的python版本对应不上目前python环境的版本导致的。
也就是说 有人升级或者卸载了python。没错,在之前我确实嫌弃自己的python版本太低,安装了更高的版本。
解决办法:
查看Python版本
whereis python
发现自己果然有py2.3 和py2.7 两个版本
查找python文件
which yum
输出为:/usr/bin/yum
vi /usr/bin/yum
将首行的#!/usr/bin/python更改为旧的python版本#!/usr/bin/python2.3
wq保存退出
此时重新执行yum list installed|grep mysql-server
执行结果发现我的环境中没有mysql-server.x86_64
没有这一条,那么我们自己安装
yum install mysql-server
安装这个又报错。。。
查看报错信息是我没有/usr/tmp文件,那么自己去创建一个吧,创建之后重新执行yum install mysql-server,安装成功。试验一下
service mysqld start
这次mysql启动成功了,那么现在重启mysql(前提是已经配置好了my.cnf)
service mysqld stop
service mysqld start
这时重新链接数据库
mysql -hX.X.X.X -Pxxxx -uname -pXXXXXXX
再mysql命令行输入
show variables like 'character_set%';
发现字符集都变成了utf8
查询一个表检查一下
select。。。。。。
解决!!!