文档首页/ 云数据迁移 CDM/ 常见问题/ 故障处理类/ 迁移MySql到DWS,TINYINT类型迁移报错
更新时间:2023-06-21 GMT+08:00

迁移MySql到DWS,TINYINT类型迁移报错

问题描述

使用CDM从MySql迁移到DWS,运行作业报错“ERROR:value '-1'is out of range for 8 b-bit integer”。

故障分析

  1. 根据问题现象,目的端类型不支持值为“-1”插入,检查目的端字段映射,排查映射问题。

  2. 根据上一步字段映射情况判断,进一步排查建表语句。

  1. 根据以上截图分析,INT1就是DWS字段类型TINYINT的别名,确认字段映射是对的,没有问题。进一步确认DWS TINYINT是否支持范围,为什么报错提示不支持‘-1’的原因,找到DWS字段类型介绍发现DWS TINYINT类型,支持范围为[0,255],不支持负数,Mysql的TINYINT类型支持范围是[-128,127]。

  1. SMALLINT支持负数,建议目的端建表使用SMALLINT类型。

解决方案

  1. 根据问题分析,客户映射字段为INT1就是DWS的TINYINT类型别名,映射是没问题的。
  2. 对于DWS来说,TINYINT类型,取值范围是 0 ~ 255,源端是Mysql,有“-1”这种负值,推荐客户使用 SMALLINT(取值范围:-32,768 ~ +32,767)建表。

Hive和MySQL的TINYINT类型取值范围都是[-128,127],而DWS的TINYINT类型取值范围是[0,255]。