You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS DMS数据复制失败,仅识别部分列触发目标表非空约束报错

AWS DMS 复制users表非空约束报错排查方案

你遇到的报错本质是DMS同步插入数据时,未给目标端users表的非空name列传有效值,触发PostgreSQL(SqlState 23502对应PostgreSQL非空约束报错)的写入失败,可按以下步骤排查:

报错原文:
ERROR - RetCode: SQL_ERROR SqlState: 23502 NativeError: 1 Message: ERROR: null value in column "name" of relation "users" violates not-null constraint;
Error while executing the query

排查步骤

  • 核对源端、目标端users表结构
    分别在源库、目标库执行表结构查询语句,确认两侧列名、列顺序、非空约束完全一致:
    源库查询:DESCRIBE users;(MySQL)/ \d users;(PostgreSQL)
    目标库查询:\d users;(PostgreSQL)
    重点确认name列在源表是否为非空,以及列的排序位置。
  • 校验DMS映射规则的列配置
    检查你配置的表映射规则,确认没有给users表配置列过滤规则:
    1. 有没有设置只同步users表的部分列,漏选了name列
    2. 有没有配置列转换规则,错误地将name列置空、重命名或者过滤
  • 验证插入语句的合法性
    你执行的INSERT INTO users VALUES(13,'test');未指定列名,完全依赖源表的列顺序赋值:
    如果源表的列顺序不是[id, name],而是比如[id, age, name],那么你这个插入语句实际是给id赋值13、age赋值'test',name为NULL,本身就不符合源表约束(如果源表name非空的话你源端就会报错,如果源端没报错说明源端name允许为空,但目标端设置了非空,就是两侧表结构不一致的问题)。
  • 修复后验证
    定位问题修复后,重启DMS复制任务,执行带明确列名的插入语句测试:
    INSERT INTO users (id, name) VALUES (14, 'dms_test');
    检查目标端users表是否成功写入数据,awsdms_apply_exception表无新报错即为恢复正常。

内容的提问来源于stack exchange,提问作者Eyal Solomon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 15:54:03