AWS DMS添加列时元数据变量$AR_M_SOURCE_SCHEMA等为空问题排查
AWS DMS 新增列时元数据变量$AR_M_SOURCE_SCHEMA/$AR_M_SOURCE_TABLE_NAME为空的问题排查与解决
问题分析
你配置的add-column转换规则逻辑合法,但元数据变量返回空值,常见原因集中在变量拼写错误、源端权限不足或任务配置细节遗漏这几个方向。
解决方法
1. 修正元数据变量名称(最常见原因)
AWS DMS中,源schema的正确元数据变量是$AR_M_SOURCE_SCHEMA_NAME,而非你当前使用的$AR_M_SOURCE_SCHEMA(缺少_NAME后缀),这是多数用户容易犯的拼写错误。
修正后的表达式应为:
'test_val_'||$AR_M_SOURCE_SCHEMA_NAME||'.'||$AR_M_SOURCE_TABLE_NAME
2. 验证源数据库账号的元数据访问权限
源端点的数据库账号必须具备读取元数据的权限,否则DMS无法捕获schema和表名信息:
- MySQL:授予账号
SELECT ON information_schema.*权限 - PostgreSQL:授予账号
USAGE ON SCHEMA my_schema,以及SELECT ON pg_catalog.pg_class, pg_catalog.pg_namespace权限 - SQL Server:授予账号
VIEW DEFINITION权限 - Oracle:授予账号
SELECT ANY DICTIONARY权限
3. 检查表映射与任务配置细节
- 确认任务的表映射中,
selection-type配置正确,且object-locator的schema-name与实际源schema完全匹配(注意部分数据库区分大小写) - 若使用通配符
%匹配表名,先尝试指定单个具体表名测试规则,排除通配符匹配异常的可能 - 若任务中存在
rename-schema或rename-table转换规则,需明确:源端元数据变量始终返回原始schema/表名,不受重命名规则影响
4. 排查任务日志
在CloudWatch日志中查看DMS任务的详细日志,搜索关键字如metadata、schema、table,检查是否存在元数据捕获失败的警告或错误信息,进一步定位问题。
内容的提问来源于stack exchange,提问作者Jake Boomgaarden
相关产品推荐
相关产品推荐

