0

我有一个网站,我意识到当您将某些字符(*,' " - _)从 Microsoft Word 等特定应用程序复制到我网站上的搜索框中时,它会返回此错误:

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

4

1 回答 1

0

虽然重新启动我的 TOMCAT 没有任何效果,但实际上我必须重新启动我的“mySql”才能进行更改。因此,您必须先停止主服务器(在我的情况下Stop TOMCAT),然后重新启动mySql,然后Start TOMCAT再重新启动。之后,在你的mySqlif 你输入:show VARIABLES like %character%;你应该看到你的数据库数据类型utf-8,如果你输入:show VARIABLES like %collation%你还应该看到你的数据库排序规则数据类型应该是utf-8_general_ci.

于 2014-11-04T14:16:38.937 回答