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

上次更新时间:2019 年 10 月 2 日

我有一个 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 限制

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助吗?