工做中由於字符集問題沒少頭疼,還犯過一次錯誤,還好拯救及時,沒有發生重大事故,唉,弄清楚點仍是很是有必要的:mysql
例如個人工做環境爲CTR+redhat5+mysql5.5linux
在導入sql語句的時候必需要注意三個地方:(此處以UTF-8字符集爲例)sql
字符集問題:編碼
1、crt中要改成UTF-8 新宋體spa
2、linux系統字符集 locale要改成server
LANG=en_US.UTF-8ssl
3、mysql中 client要該爲:openssl
mysql > \sinnodb
...tls
Server characterset: utf8
Db characterset: utf8
Client characterset: latin1
Conn. characterset: latin1
...
mysql > set names utf8; 此處爲臨時改客戶端的字符集爲UTF-8,這個因爲歷史遺留問題形成的,只能臨時改。
Query OK, 0 rows affected (0.00 sec)
mysql > \s
...
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
...
另外一種狀況,能夠永久生效字符集,方法以下:
對於中文亂碼問題,須要設置mysql字符集:
用find命令查找cnf文件。記得不要去找my.cnf由於它不必定存在,而應該找*.cnf。
# find / -name '*.cnf'
/usr/share/doc/MySQL-server-5.5.27/my-huge.cnf
/usr/share/doc/MySQL-server-5.5.27/my-large.cnf
/usr/share/doc/MySQL-server-5.5.27/my-medium.cnf
/usr/share/doc/MySQL-server-5.5.27/my-small.cnf
/usr/share/doc/MySQL-server-5.5.27/my-innodb-heavy-4G.cnf
/usr/share/doc/kpathsea-2007/kpathsea_defaults/texmf-kpathsea-defaults.cnf
/usr/share/mysql/my-huge.cnf
/usr/share/mysql/my-large.cnf
/usr/share/mysql/my-medium.cnf
/usr/share/mysql/my-small.cnf
/usr/share/mysql/my-innodb-heavy-4G.cnf
/etc/pki/tls/openssl.cnf
找到以後,複製一個出來
# cp /usr/share/mysql/my-huge.cnf /etc/my.cnf
打開my.cnf修改編碼
# vi /etc/my.cnf
mysql5.5如下:
在[mysqld]下添加
default-character-set=utf8
在[client]下添加
default-character-set=utf8
mysql 5.5 改成:
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
而後重啓mysql