如何为我的 AWS DMS 满负载和 CDC 任务排查“ERROR: null value in column violates not-null constraint”(错误:列中的空值违反了非空值限制)?

1 分钟阅读
0

我有一个 AWS Database Migration Service (AWS DMS) 任务处于满负载和变更数据捕获 (CDC) 状态。我收到了一个错误,指出:“ERROR: null value in column violates not-null constraint.”(错误:列中的空值违反了非空值限制。) 如何解决此问题?

解决方法

如果您的迁移任务中有大型对象 (LOB) 列,则您会看到与下面相似的日志条目:

消息
E: Command failed to load data with exit error code 1, Command output: ERROR: null value in column ’xyz’ violates not-null constraint

当 AWS DMS 迁移 LOB 列时,首先将除 LOB 列之外的所有数据迁移到您的目标表中,AWS DMS 在 LOB 列中插入一个 NULL 记录。然后,AWS DMS 使用 LOB 列数据更新目标表中的行。

如果目标不是由 AWS DMS 创建,请检查目标数据描述语言 (DDL) 以查看是否指定了 NOT NULL 属性。如果有 NOT NULL 属性,则更改表以删除对 LOB 列数据类型的 NOT NULL 限制。然后,恢复您的 AWS DMS 任务。

请参阅下表以了解 LOB 模式和任务阶段的 AWS DMS 任务行:

LOB 模式满负载变更数据捕获
完全 LOB 模式不允许 NOT NULL 限制不允许 NOT NULL 限制
有限 LOB 模式允许 NULL 限制不允许 NOT NULL 限制

相关信息

迁移大型二进制对象 (LOB)

AWS 官方
AWS 官方已更新 3 年前