文档首页/ 数据治理中心 DataArts Studio/ 用户指南/ 数据开发/ 实时处理集成作业开发/ 常见问题/ MySQL到DWS实时同步中,同步新增列的DDL时报错怎么办?
更新时间:2024-10-18 GMT+08:00

MySQL到DWS实时同步中,同步新增列的DDL时报错怎么办?

问题描述

1. 运行migration mysql2dws链路的实时同步作业,DDL同步中对增加列操作设置为“正常处理”。

2. 在目的端DWS表有数据的场景下,源端MySQL执行DDL语句,添加带非空约束的列,默认值为空字符串,如:

alter table test add column t_col varchar(30) not null default ''

3. migration作业产生异常,报错执行DDL失败,失败原因为:column "t_col" contains null values。

原因分析

DWS数据库为oracle兼容模式时,会将空字符串视为NULL做处理,因此在有数据的场景下,不能添加默认值为空串的非空列。

解决方案

1. 修改源端DDL语句,新增列的默认值设置为非空字符串。

2. 如果无法修改DDL,则需要将DWS的数据库更换为mysql兼容模式,建库语句如:

create database bigdata with encoding 'UTF-8' dbcompatibility 'mysql' template template0;