使MySQL能够存储emoji表情字符的设置教程

 更新时间:2015年12月23日 16:06:36   投稿:goldensun  
这篇文章主要介绍了使MySQL能够存储emoji表情字符的设置教程,关键在于utf8mb4字符集的设置,需要的朋友可以参考下

MySQL 需要支持 emoji 表情符号版本需要大于5.5.3,且字符集需要设置为utf8mb4 字符集。


utf8mb4和utf8到底有什么区别呢?原来以往的mysql的utf8一个字符最多3字节,而utf8mb4则扩展到一个字符最多能有4字节,所以能支持更多的字符集。

将Mysql的编码从utf8转换成utf8mb4。

需要 >= MySQL 5.5.3版本、从库也必须是5.5的了、低版本不支持这个字符集、复制报错

停止MySQL Server服务

修改 my.cnf或者mysql.ini

[client]
 default-character-set = utf8mb4

[mysql]
 default-character-set = utf8mb4

[mysqld]
 character-set-client-handshake = FALSE
 character-set-server = utf8mb4
 collation-server = utf8mb4_unicode_ci
 init_connect='SET NAMES utf8mb4'

重启 MySQL Server、检查字符集。

查看服务器字符集设置

mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character%' OR Variable_name LIKE 'collation%';
+--------------------------+--------------------+
| Variable_name      | Value       |
+--------------------------+--------------------+
| character_set_client   | utf8mb4      |
| character_set_connection | utf8mb4      |
| character_set_database  | utf8mb4      |
| character_set_filesystem | binary       |
| character_set_results  | utf8mb4      |
| character_set_server   | utf8mb4      |
| character_set_system   | utf8        |
| collation_connection   | utf8mb4_unicode_ci |
| collation_database    | utf8mb4_unicode_ci |
| collation_server     | utf8mb4_unicode_ci |
+--------------------------+--------------------+

查看数据库字符集

mysql> select * from SCHEMATA where SCHEMA_NAME='ttlsa';
+--------------+-------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+-------------+----------------------------+------------------------+----------+
| def     | ttlsa   | utf8mb4          | utf8mb4_unicode_ci   | NULL   |
+--------------+-------------+----------------------------+------------------------+----------+

查看表字符集

mysql> select TABLE_SCHEMA,TABLE_NAME,TABLE_COLLATION from information_schema.TABLES;
+--------------------+----------------------------------------------------+--------------------+
| TABLE_SCHEMA    | TABLE_NAME                     | TABLE_COLLATION  |
+--------------------+----------------------------------------------------+--------------------+

查看列字符集

mysql> select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLLATION_NAME from COLUMNS;
+--------------------+----------------------------------------------------+--------------------------------------------+--------------------+
| TABLE_SCHEMA    | TABLE_NAME                     | COLUMN_NAME                | COLLATION_NAME   |
+--------------------+----------------------------------------------------+--------------------------------------------+--------------------+

转换字符集语句

use information_schema;
SELECT concat("ALTER DATABASE `",table_schema,"` CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;") as _sql 
FROM `TABLES` where table_schema like "DB_NAME" group by table_schema;
SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name,"` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") as _sql 
FROM `TABLES` where table_schema like "DB_NAME" group by table_schema, table_name;
SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type,"(",character_maximum_length,") CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") as _sql 
FROM `COLUMNS` where table_schema like "DB_NAME" and data_type in ('varchar');
SELECT concat("ALTER TABLE `",table_schema,"`.`",table_name, "` CHANGE `",column_name,"` `",column_name,"` ",data_type," CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;") as _sql 
FROM `COLUMNS` where table_schema like "DB_NAME" and data_type in ('text','tinytext','mediumtext','long

相关文章

  • Mac MySQL重置Root密码的教程

    Mac MySQL重置Root密码的教程

    安装MySQL后时间太长了会忘记密码,在这里总结一下忘记密码时如何重置本地MySQL Root密码。感兴趣的朋友跟随脚本之家一起学习吧
    2018-03-03
  • MySQL表级锁使用说明

    MySQL表级锁使用说明

    这篇文章主要为大家介绍了MySQL表级锁使用说明,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • mysql行锁(for update)解决高并发问题

    mysql行锁(for update)解决高并发问题

    这篇文章主要介绍了mysql行锁(for update)解决高并发问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • mysql数据库的加密与解密方式

    mysql数据库的加密与解密方式

    这篇文章主要介绍了mysql数据库的加密与解密方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 超详细教你怎么升级Mysql的版本

    超详细教你怎么升级Mysql的版本

    今天教各位小伙伴怎么升级Mysql的版本,文中非常详细的介绍了Mysql更换版本的操作,包括数据备份,卸载,安装.对不会升级的小伙伴们很有帮助哦,需要的朋友可以参考下
    2021-05-05
  • CentOS系统下如何设置mysql每天自动备份

    CentOS系统下如何设置mysql每天自动备份

    备份是容灾的基础,是指为防止系统出现操作失误或系统故障导致数据丢失,而将全部或部分数据集合从应用主机的硬盘或阵列复制到其它的存储介质的过程。本文将详细介绍在CentOS系统下如何设置mysql每天自动备份,有需要的朋友们下面来一起看看吧。
    2016-10-10
  • MySQL的数据类型和建库策略分析详解

    MySQL的数据类型和建库策略分析详解

    无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。
    2008-04-04
  • innodb如何巧妙的实现事务隔离级别详解

    innodb如何巧妙的实现事务隔离级别详解

    隔离是ACID(Atomicity,Consistency,Isolation,Durability)的重要部分,下面这篇文章主要给大家介绍了关于innodb如何巧妙的实现事务隔离级别的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2018-11-11
  • MySQL8.0 DDL原子性特性及实现原理

    MySQL8.0 DDL原子性特性及实现原理

    这篇文章主要介绍了MySQL8.0 DDL原子性特性及实现原理,本文给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-07-07
  • MySql主键id不推荐使用UUID的原因分析

    MySql主键id不推荐使用UUID的原因分析

    MySQL的索引主要分为主键索引(PRIMARY KEY),唯一索引(UNIQUE) ,普通索引(INDEX)和全文索引(FULLTEXT) ,主键索引是一种特殊的唯一索引,不允许有空值,这篇文章主要介绍了MySql主键id不推荐使用UUID的原因分析,需要的朋友可以参考下
    2023-03-03

最新评论