Mysql对于emoji的支持 - Wangxiaoman/tech-note GitHub Wiki

版本支持

utf8mb4的最低mysql版本支持版本为5.5.3+

select version();

修改database、table、column的字符集为utf8mb4

ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE table_name CHANGE column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Mysql的my.cnf配置调整

[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重启并检查字符集

  • 重启Mysql使my.cnf生效
  • 检查字符集配置
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';
+--------------------------+------------------------------------------------+
| Variable_name            | Value                                          |
+--------------------------+------------------------------------------------+
| character_set_client     | utf8                                           |
| character_set_connection | utf8                                           |
| character_set_database   | utf8mb4                                        |
| character_set_filesystem | binary                                         |
| character_set_results    | utf8                                           |
| character_set_server     | utf8mb4                                        |
| character_set_system     | utf8                                           |
| character_sets_dir       | /cluster/software/mysql-5.7.17/share/charsets/ |
| collation_connection     | utf8_general_ci                                |
| collation_database       | utf8mb4_general_ci                             |
| collation_server         | utf8mb4_general_ci                             |
+--------------------------+------------------------------------------------+

Java的connector支持

如果你用的是java服务器,升级或确保你的mysql connector版本高于5.1.13,否则仍然无法使用utf8mb4