日期:2014-05-16  浏览次数:20942 次

linux下修改mysql的默认编码出现的无效问题

根据网上的描述。修改my.cnf文件内容
1.查找mysql的cnf文件位置
find / -iname *.cnf
2.随便复制一个到/etc/my.cnf?? --注意;原先我不是复制到这里的。而是在/etc/mysql/my.cnf? 这也是导致修改无效的原因
cp /usr/local/mysql/data-supxxx/my-medium.cnf /etc/mysql/my.cnf
3.修改my.cnf
gedit /etc/mysql/my.cnf
在【client】下添加
default-character-set=utf8
在[mysqld]下添加
default-charcter-set=utf8
4.重启服务ok?

?

但是发现修改并没有起作用。
排错思路:查看mysql的启动文件,看它是怎么读取配置文件的
打开mysql启动文件
gedit /etc/init.d/mysqld
先查看basedir、datadir都没有问题
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
然后再查看它是在哪里读取my.cnf文件的

位置大概在中间部分
可以看到
if test -r "$basedir/my.cnf"
then
? extra_args="-e $basedir/my.cnf"
else
? if test -r "$datadir/my.cnf"
? then
??? extra_args="-e $datadir/my.cnf"
? fi
fi
原来它是在/usr/local/mysql和子目录data下读取my.cnf
随后将my.cnf复制到这两目录

修改完后、发现只是修改了服务的编码格式、其他的client、database都没有修改
然后继续找、发现如下
conf=/etc/my.cnf
原来它还会在/etc/下去找查找文件
知道后、将my.cnf也复制一份到/etc目录下
呵呵、搞定。
如果不想这么麻烦、到处复制文件、可以直接修改配置文件的路径指向你的my.cnf文件所在位置也行