2014-10-28 74 views
0

我有一个网站,当你复制从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

回答

0

虽然重新启动我的TOMCAT没有任何影响,但实际上我必须重新启动mySql才能进行更改地点。所以你必须先停止主服务器(在本例中为Stop TOMCAT),然后重新启动mySql,然后再重新启动Start TOMCAT。之后,在你mySql如果键入:show VARIABLES like %character%;你应该看到你的数据库的数据类型与utf-8,如果你键入:show VARIABLES like %collation%你也应该看到,这应该是utf-8_general_ci数据库校验数据类型。