让mysql支持emoji表情,涉及无线相关的 mysql 数据库建议都提前采用 utf8mb4 字符集。utf8mb4和utf8到底有什么区别呢?原来以往的
让mysql支持emoji表情,涉及无线相关的 mysql 数据库建议都提前采用 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\_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;
修改字段的字符集:
alter table table_name change column_name column_name varchar(191) character set utf8mb4 collate utf8mb4_unicode_ci;
如果只是某个字段需要 只需要修改那个字段的字符集就可以了
另外服务器连接数据库 connector/j的连接参数中,不要加characterencoding参数。 不加这个参数时,,默认值就时autodetect。
本文永久更新链接地址: