我有一个网站,当你复制从Microsoft Word等具体应用,为在我的网站上搜索框中输入一些字符(*,' " - _
)我意识到,它返回此错误:设置CentOS 6的mysql的字符集为UTF8
ERROR org.hibernate.util.JDBCExceptionReporter - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'
所以我去看看我的数据库,我想看看,如果数据库中使用UTF-8。
mysql> SHOW VARIABLES LIKE '%character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
mysql> SHOW VARIABLES LIKE '%collation%';
+----------------------+-------------------+
| Variable_name | Value |
+----------------------+-------------------+
| collation_connection | utf8_general_ci |
| collation_database | latin1_swedish_ci |
| collation_server | latin1_swedish_ci |
+----------------------+-------------------+
正如你所看到的,数据库使用latin1
,我想将它设置为使用utf8
。所以,首先我是一个Centos 6.2
服务器和文件my.cnf
文件驻留在/etc/my.cnf
和文件是[mysqld]
下如下:
[mysqld]
local-infile=0
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
init_connect ='SET NAMES utf8'
character_set_server = utf8
collation_server = utf8_general_ci
PS我并不担心[client]
节,因为它表明,它使用utf8
的值为character_set_client
。
问题:
虽然我试图将服务器设置在我my.cnf
文件(并关闭该文件,关闭我的Tomcat和重新启动我的Tomcat的)。没有什么改变。当我运行我显示的第一个查询时,它仍然显示character_set_server
仍在使用latin1