使用源码安装,参数是
./configure --prefix=/mysql --with-unix-socket-path=/mysql/mysql.sock --localstatedir=/database/mysql/data --with-charset=gbk --with-extra-charsets=all安装成功后,在securecrt中使用mysql命令登录,报错
mysql: Character set 'gbk' is not a compiled character set and is not specified in the '/mysql/data/mysql/charsets/Index.xml' file修改 my.cnf 文件
在[client]下面加入
default-character-set=utf8这样就可以使用mysql登录,但是查询有中文字符的表,显示乱码.执行show variables like 'char%';
显示
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | /mysql/share/mysql/charsets/ |
+--------------------------+------------------------------+
执行set character_set_results=gbk;后,可以显示表中的中文字符了,但是查询时select * from t where cname like '中%';报错
ERROR 1267 (HY000): Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'
执行set character_set_client=gbk;后,可以正常查询现在想问的是为什么默认gbk时,使用mysql会报错?用上面的方面麻烦的地方是,每次用mysql登录进去后,都要执行一下
mysql> set character_set_results=gbk; set character_set_client=gbk;
很麻烦,请高手指教!
./configure --prefix=/mysql --with-unix-socket-path=/mysql/mysql.sock --localstatedir=/database/mysql/data --with-charset=gbk --with-extra-charsets=all安装成功后,在securecrt中使用mysql命令登录,报错
mysql: Character set 'gbk' is not a compiled character set and is not specified in the '/mysql/data/mysql/charsets/Index.xml' file修改 my.cnf 文件
在[client]下面加入
default-character-set=utf8这样就可以使用mysql登录,但是查询有中文字符的表,显示乱码.执行show variables like 'char%';
显示
+--------------------------+------------------------------+
| Variable_name | Value |
+--------------------------+------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | gbk |
| character_set_system | utf8 |
| character_sets_dir | /mysql/share/mysql/charsets/ |
+--------------------------+------------------------------+
执行set character_set_results=gbk;后,可以显示表中的中文字符了,但是查询时select * from t where cname like '中%';报错
ERROR 1267 (HY000): Illegal mix of collations (gbk_chinese_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'
执行set character_set_client=gbk;后,可以正常查询现在想问的是为什么默认gbk时,使用mysql会报错?用上面的方面麻烦的地方是,每次用mysql登录进去后,都要执行一下
mysql> set character_set_results=gbk; set character_set_client=gbk;
很麻烦,请高手指教!
看看表的数据库和表的字符集都是什么?在[client]下面加入
default-character-set=utf8
把服务端的也设置为utf8
[mysqld]
loose-default-character-set=utf8呵呵,只是建议啊,学习中
可以同时把character_set_client,character_set_results,character_set_connection设置成gbk。
不想每次都设置编码的话可以在my.cnf文件的[client]节点中添加default_character_set=gbk
你的客户端窗口缺省输入字符集是gbk,但是你客户端连接字符集是utf8,这样mysql就把gbk当成utf8来处理,自然是乱码。解决办法:
方法一:
在[client]下面加入
default-character-set=gbk
方法二:
每次登陆时执行set names 'gbk';
default-character-set=gbk善于字符集的解释,你可以参考下贴。
http://blog.csdn.net/ACMAIN_CHM/archive/2009/05/12/4174186.aspx
MySQL 中文显示乱码