平时采用的都是utf8编码,每个字符三个字节,现在要把4个字节的emoji表情插入数据库。
版本需要 >= 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.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 表名