首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
mysql 数据库字符集修改一步搞定
简介: 数据乱码是一个头疼的问题,做数据迁移时遇到数据乱码,linux环境下经过测试最终解决。

项目从一个服务器迁移到另一个服务器上,各种环境搭建好之后发现插入数据时出现乱码,经过排查发现是插入到mysql的数据乱码所致。这个问题以前也遇到过,跟随记忆再次搜索下资料并进行测试,但是遇到一些问题,浪费了一些时间。在这里给出经过测试运行通过的方法,以便以后查看。

测试环境

#echo $LANG
en_US.UTF-8

[root@AY140 /]# uname -a
Linux AY140312114018976b72Z 2.6.32-358.6.2.el6.x86_64 #1 SMP Thu May 16 20:59:36 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

第一步查看 my.cnf

查看 /etc/my.cnf 是否存在。在 linux 环境下默认会去读这个文件,默认 mysql 5.5 情况下该位置下无此文件,如果该文件存在,那么就可以直接修改该文件。如果不存在那么可以到 /usr/share/mysql 目录下根据机器配置和需要可考一个 my 开头 cnf 结尾的配置文件到 /etc 目录下,并修改名称为 my.cnf

第二步修改 my.cnf

通过命令vi /etc/my.cnf 打开文件后 找到 [mysqld] 处,在其下插入一行配置 character-set-server = utf8 后保存即可将数据库编码设置为utf8。

第三步重启mysql

执行命令

/etc/rc.d/init.d/mysql restart

第四步验证配置

待重启成功后连接上数据库,执行下面的命令得到的结果大致如下,那么即配置正确并生效。

mysql> show variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

注:部分网络文摘说在 [mysqld] 下添加配置 default-character-set=utf8 也可解决数据库乱码问题,但该方法在测试时发现会导致mysql 无法成启动