Nifi使用PutDatabaseRecord插入数据时报不存在的Age字段非空错误
报错排查解决步骤
- 检查
Record Reader组件配置:你使用的Record Reader(比如JsonTreeReader、AvroReader等)如果配置了固定Schema、或者对接了Schema Registry,大概率是Schema定义中还保留了Age字段:哪怕实际传入的数据里没有这个字段,Reader也会按照Schema规则补全为null值,传给PutDatabaseRecord后就会触发非空约束报错。需要修改对应Schema,删除Age相关的字段定义,或者将Reader的Schema访问策略调整为从数据中推断Schema(如果你的数据是自描述格式比如JSON)。 - 检查
PutDatabaseRecord处理器配置:- 确认
Table Name属性指向你最新创建的无Age字段的表,避免误写入残留Age字段的旧表 - 若开启了
Generate Table DDL自动建表配置,确认自动生成的DDL中没有意外携带Age字段的非空约束定义
- 确认
- 检查上游输出内容:在
PutDatabaseRecord前添加LogAttribute处理器,打印输出的完整Record Schema和内容,确认是否有隐性携带的Age字段。 - 检查JDBC连接配置:确认连接的目标数据库、库表空间和你预期一致,避免连接指向了其他环境携带
Age非空约束的旧表。
如果完成上述排查后问题仍存在,可以在PutDatabaseRecord前新增UpdateRecord处理器,添加规则显式删除Age字段,再重试写入操作。
内容的提问来源于stack exchange,提问作者Anil Krishna Parvathaneni
相关产品推荐
相关产品推荐

