Linux下安装的mysql数据库插入中文乱码或sql查询语句条件中有中文查不到数据

问题描述:Linux下的mysql数据库表中插入中文乱码,或sql查询语句条件中有中文查不到数据,但是数据表中已有的中文读取出来不乱码

解决方法如下,我在网上找了别人的解决方法,并整理了出来.

首先在登录mysql的情况向使用 show variables like ‘%char%’; 查看下当前编码,发现有的是utf8,有的不是,server和database都不是utf8,而是latin1,


我在网上找解决方法,说可以在mysql的配置文件中修改,文件为/etc/my.cnf.

可是在/etc 目录下找不到my.cnf 配置文件。最后查明了原因:

1、本机的mysql版本是5.6的,5.6及以上配置文件是my-default.conf ,5.5及以下版本为 my.cnf

2、本机的mysql安装包是rpm的,所以不会自带my.cnf 或者my-defaule.cnf

找到这两个原因就好解决了,从mysql的安装目录复制一份my-default.cnf 文件到 /etc/my.cnf

cp /usr/share/mysql/my-default.cnf /etc/my.cnf

(或者自己在etc下新建一个也行,添加下如下内容)

接着下一步修改my.cnf 文件配置如下(没有就加上):

#/etc/my.cnf
 
[client]
default-character-set=utf8
 
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#default-character-set=utf8
character-set-server=utf8
init_connect='SET NAMES utf8'
 
[mysql]
no-auto-rehash
default-character-set=utf8
 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


:wq!

保存后,重启mysql服务:service mysql restart

重启成功后,使用 mysql -u root -p 登录客户端后,再查一下字符集:


看到字符集已经改了,

创建一个数据库和数据表,插入一条中文数据,发现没问题了。

猜你喜欢

转载自blog.csdn.net/zhanglei500038/article/details/77414332