原因:mysql默认utf-8一字符为3字节,而emoji是4字节
解决方案:
首先mysql版本>=5.5.3
修改 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、检查字符集
SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';修改数据库字符集:
ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;修改表的字符集:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注意:5.6版本的my.ini文件在ProgramData里,这里其实是一个读取顺序的问题,先读取ProgramData,再读取安装目录下。