前期已经通过msyql客户端(黑窗口)修改了mysql的编码和字符集,
mysql中已经可以插入emoji表情,但是通过数据同步(datax),从hive同步emoji表情到mysql报错:
解决方案:
-- 修改mysql配置文件
vim /etc/my.cnf
-- 添加如下内容
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
-- 重启mysqld
systemctl restart mysqld.service
-- 查看myqld运行状态,保证重启之后的mysql正常运行
service mysqld status
-- 建库
CREATE DATABASE `xcdqm` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
-- 建表
CREATE TABLE `test_emoji` (
`id` int(11) DEFAULT NULL,
`emoji` varchar(1000) COLLATE utf8mb4_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
-- 在hive中建表,并插入数据,并通过平台的数据同步任务(datax)将数据从hive同步到msyql
-- 如下语句不能直接在mysql客户端(黑窗口执行),会报错(表情被转义)
insert into table test_emoji values
(12345, '🐢'),
(12345, '🐇'),
(12345, '🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓🍓’);
最后,在msyql中可以只是查询出来表情,如最后的图所示。