共计 2475 个字符,预计需要花费 7 分钟才能阅读完成。
MySQL: 5.6.25
OS: CentOS6.5
刚刚在做查询优化的时候,自己创建表,但是没有注意到字符集的问题,当我向默认情况下创建的表中插入数据的时候,死活都插不进去,中文的不能显示出来。
过程如下:
创建表:
create table t1 (
id int(10) PRIMARY KEY,
name varchar(20),
class varchar(20));
插入数据:
insert into t1 values(1,’zhangyi’,’ 一班 ’);
insert into t1 values(2,’zhanger’,’ 二班 ’);
结果显示:
- mysql> insert into t1 values(1,’zhangyi’,”);
Query OK, 1 row affected (0.01 sec)mysql> insert into t1 values(2,’zhanger’,”);
Query OK, 1 row affected (0.01 sec) - mysql> select * from t1;
- +––––+–––––––––+––––––––+
- | id | name | class |
- +––––+–––––––––+––––––––+
- | 1 | zhangyi | |
- | 2 | zhanger | |
- +––––+–––––––––+––––––––+
- 2 rows in set (0.00 sec)
当时没有想到是字符集的问题,就纳闷怎么查不进去,而且 insert 的时候,后面的中文没有显示出来,这就奇怪了。
去图形界面用 navicat 插入,也是不成功。然后就去查看字符集,
- 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/ |
- +––––––––––––––––––––––––––+––––––––––––––––––––––––––––+
结果字符集不是 UTF8 而是 latin1
原因:
我的 MySQL5.6.25 是通过 rpm 包安装的,应该是 MySQL 默认的字符集是latin1。如果是编译安装可以再 cmake 的时候指定字符集。
解决办法:
我先把表的字符集修改为 utf8,图形界面和命令行都一样
ALTER TABLE t1 DEFAULT CHARACTER SET=utf8;
再查看的时候就可以显示了。
为了以后的表都可以正常显示中文,我直接把 MySQL 数据库实例的字符集修改为 utf8
5.6 之前的版本是
default-character-set=utf8
5.6 版本修改字符集的参数是
character-set-server=utf8
直接 vi /etc/my.cnf 文件添加到[mysqld] 下面,重启 MySQL 即可
- [mysqld]
- socket = /mysqldata/mysql/mysql.sock
- character-set–server=utf8
再去数据库里面查看如下:
- 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/ |
- +––––––––––––––––––––––––––+––––––––––––––––––––––––––––+
查看表记录显示:
- mysql> select * from t1;
- +—-+———+——–+
- | id | name | class |
- +—-+———+——–+
- | 1 | zhangyi | 一班 |
- | 2 | zhanger | 二班 |
- | 4 | zhangsi | 四班 |
- +—-+———+——–+
- 3 rows in set (0.00 sec)
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-08/134475.htm