odps同步到mysql脏数据报错,因为底层数据包含表情符号,但mysql的库表字段字符集都改成utf8mb4了,现在要怎么操作呢
需要先进行转码的,不然不好操作的,这个在数据库中是经常遇到的事情
根据报错信息来看的话应该还是你的mysql映射字段的字符集的问题,但是根据你的描述,你已经将mysql数据库和数据表对应字段的字符集都改成了utf8mb4,那么现在首先需要确认一下你的mysql数据库和数据表对应字段的字符集是否修改成功了,查看数据库字符集;SHOW CREATE DATABASE 数据库名称; 查看数据表字符集:SHOW TABLE STATUS FROM 数据库名称 LIKE 数据表名称; 查看字段字符集:SHOW FULL COLUMNS FROM 数据表名称; 都确认完成之后如果发现某一项字符集没有改成utf8mb4,那么执行对应操作修改即可
方法一:单独修改需要保存特殊符号的字段编码 1.将字段编码改为utf8mb4
ALTER TABLE 数据库表名 MODIFY `字段名` TEXT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
2.查看字段编码是否修改成功:SHOW FULL COLUMNS FROM 表名;
方法二:备份数据,重新创建数据库表 1.备份数据库数据mysqldump -uroot -p密码 --databases 数据库名 > all_data.sql 2.删除数据库drop database 数据库名 3.重新创建数据库create database 数据库名 4.新建数据库表,将编码改为utf8mb4CHARSET=utf8mb4
CREATE TABLE IF NOT EXISTS `数据库表名`(
`id` INT UNSIGNED AUTO_INCREMENT,
`字段1` VARCHAR(100) NOT NULL,
`字段2` INT NOT NULL,
PRIMARY KEY ( `id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5.导入数据库数据mysql -uroot -p密码 < all_data.sql 6.然后重新插入带表情包符号的内容就正常了。
楼主,首先找到数据库的配置文件,然后查看一下配置文件,然后找到对应的节点,都设置成utf8mb4,重启数据库,最后修改字符集的配置。
1、找到Mysql配置文件,通过查看MySql服务的启动命令来确认配置文件
2、打开配置文件,分别在【client】【mysql】【mysqld】节点下设置对应参数如下:
复制代码 [client] default-character-set = utf8mb4
[mysql] default-character-set = utf8mb4
[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci 复制代码 3、重启Mysql服务,可以直接在服务里右键重启,也可用以下命令重启:
service mysqld restart 或 service mysql restart 4、将数据库、表、对应字段字符集都修改为 utf8mb4,参与以下命令
复制代码 -- 查看数据表的编码格式 show create table <表名>;
--修改数据库的编码格式 alter database <数据库名> character set utf8mb4;
--修改数据表格编码格式1 alter table <表名> character set utf8mb4;
--修改字段编码格式 alter table <表名> change <字段名> <字段名> <类型> character set utf8mb4; 复制代码 5、修改程序连接串的字符集配置
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。