0
点赞
收藏
分享

微信扫一扫

阿里云DataWorks同步数据的时候,出现emoji表情存不进去的问题的解决方法


    背景:公司使用阿里云的BI工具来做数据的统计,在这之前的一个步骤是做数据的筛选.这一步使用阿里的DataWorks.使用DataWorks的过程中看log发现有一部分数据是通过DataWorks导入不到目标库的.


原因:由于公司使用的数据库是阿里云的RDS版云数据库,所以在DataWorks中配置数据源时选择的数据源的类型一直都是阿里云数据库(RDS).通过RDS实例ID等信息来配置数据源.所以我猜想这样默认采用的数据库编码是utf8.而emoji表情和一些特殊的字符是4个字节.而Mysql的utf8编码最多3个字节,所以插不进去.


背景知识:


  • utf8
  • 在Mysql中utf8编码的字符会占用1-3个字节来存储数据
  • 只支持BMP字符
  • UTF8MB4
  • 在Mysql中utf8mb4编码的字符会占用1-4个字节来存储数据
  • 支持BMP字符
  • 还支持Supplementary字符,比如emoji符号
  • Mysql5.5以上才有utf8mb4编码


从上面可以看出,utf8mb4是utf8的超集,所以从utf8升级到utf8mb4,理论上是没有任何问题的,不过对数据库版本有要求(5.5以上)。




    解决方法:DataWorks配置数据源的方式有三种:阿里云数据库(RDS),有公网IP,无公网IP.可以使用用公网IP,无公网IP两种方式.然后JDBC URL 的格式配成jdbc:mysql://xxx.x.x:port/database?com.mysql.jdbc.faultInjection.serverCharsetIndex=45就可以了


    

举报

相关推荐

0 条评论