更新时间:2022-10-28 GMT+08:00
通过DLI跨源写DWS表,非空字段出现空值异常
问题现象
客户在DWS建表,然后在DLI创建跨源连接读写该表,突然出现如下异常,报错信息显示DLI向该表某非空字段写入了空值,因为非空约束存在导致作业出错。
报错信息如下:
DLI.0999: PSQLException: ERROR: dn_6009_6010: null value in column "ctr" violates not-null constraint Detail: Failing row contains (400070309, 9.00, 25, null, 2020-09-22, 2020-09-23 04:30:01.741).
原因分析
- DLI源表对应字段cir为double类型。
图1 创建源表
- 目标表对应字段类型为decimal(9,6)。
图2 创建目标表
- 查询源表数据,发现导致问题产生的记录ctr值为1675,整数位(4位)超出所定义的decimal精度(9 – 6 = 3位),导致double转decimal时overflow产生null值,而对应dws表字段为非空导致插入失败。
处理步骤
修改目的表所定义的decimal精度即可解决。
父主题: 跨源连接运维报错
跨源连接运维报错 所有常见问题
- 新建跨源连接,显示已激活,但使用时报communication link failure错误
- 跨源访问MRS HBase,连接超时,日志未打印错误
- DLI跨源连接报错找不到子网
- 跨源RDS表,执行insert overwrite报Incorrect string value错误
- 创建RDS跨源表报空指针错误
- 对跨源DWS表执行insert overwrite操作,报错:org.postgresql.util.PSQLException: ERROR: tuple concurrently updated
- 通过跨源表向CloudTable Hbase表导入数据,executor报错:RegionTooBusyException
- 通过DLI跨源写DWS表,非空字段出现空值异常
- 更新跨源目的端源表后,未同时更新对应跨源表,导致insert作业失败
more