首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将CENTOS 6 mysql字符集设置为UTF8

问将CENTOS 6 mysql字符集设置为UTF8
EN

Stack Overflow用户
提问于 2014-10-28 10:15:09
回答 1查看 2K关注 0票数 0

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

代码语言:javascript
复制
ERROR org.hibernate.util.JDBCExceptionReporter - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation 'like'

所以我去查看我的数据库,我想看看数据库是否使用了UTF-8。

代码语言:javascript
复制
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]下面

代码语言:javascript
复制
[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

我不担心[client]部分,因为它在character_set_client的值下使用了utf8。

问题:

尽管我尝试在我的my.cnf文件中设置服务器(并且关闭了该文件,关闭了我的tomcat并重新启动了tomcat)。什么都没有改变。当我运行我显示的第一个查询时,它仍然显示character_set_server仍然在使用latin1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-04 14:16:38

虽然重新启动TOMCAT没有任何效果,但实际上我不得不重新启动'mySql‘,以便进行更改。因此,您必须先停止主服务器(在我的例子中是Stop TOMCAT),然后重新启动mySql,然后再重新启动Start TOMCAT。之后,在您的mySql中,如果您键入:show VARIABLES like %character%;,您应该看到使用utf-8的数据库数据类型,如果您键入:show VARIABLES like %collation%,您还应该看到数据库排序规则数据类型,它应该是utf-8_general_ci。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26605698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档