在mysql中插入emoji表情

平时采用的都是utf8编码,每个字符三个字节,现在要把4个字节的emoji表情插入数据库。

那就把数据库的默认字符集改掉,改成utf8的超集utf8mb4。
image.png

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

分三个步骤:
第一步,修改mysql数据库的配置文件,使用新的字符集。
linux:my.cnf;windows:my.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'

第二步:修改数据库、表、字段的字符集。
ALTER DATABASE 数据库名 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ALTER TABLE 表名 CHANGE 字段名 字段名 VARCHAR(实际长度) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
注意那个字段名就是写两遍。

第三步:服务器连接数据库 Connector/J的连接参数中,不要加characterEncoding参数。 不加这个参数时,默认值就时autodetect。

jdbc.url=jdbc:mysql://{maven.jdbc.host}:{maven.jdbc.port}/${maven.jdbc.db}?useUnicode=true&autoReconnect=true&rewriteBatchedStatements=TRUE

第四步:重启mysql

附上一些命令

查看数据库使用的字符集
SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

查看数据库版本
SELECT VERSION();

查看表的字段使用的字符类型
SHOW FULL FIELDS FROM 表名

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容