更新时间:2023-06-21 GMT+08:00
迁移MySql到DWS,TINYINT类型迁移报错
问题描述
使用CDM从MySql迁移到DWS,运行作业报错“ERROR:value '-1'is out of range for 8 b-bit integer”。
故障分析
- 根据以上截图分析,INT1就是DWS字段类型TINYINT的别名,确认字段映射是对的,没有问题。进一步确认DWS TINYINT是否支持范围,为什么报错提示不支持‘-1’的原因,找到DWS字段类型介绍发现DWS TINYINT类型,支持范围为[0,255],不支持负数,Mysql的TINYINT类型支持范围是[-128,127]。
- SMALLINT支持负数,建议目的端建表使用SMALLINT类型。
解决方案
- 根据问题分析,客户映射字段为INT1就是DWS的TINYINT类型别名,映射是没问题的。
- 对于DWS来说,TINYINT类型,取值范围是 0 ~ 255,源端是Mysql,有“-1”这种负值,推荐客户使用 SMALLINT(取值范围:-32,768 ~ +32,767)建表。
Hive和MySQL的TINYINT类型取值范围都是[-128,127],而DWS的TINYINT类型取值范围是[0,255]。
父主题: 故障处理类