Apache NiFi同步MySQL报错:ConvertJSONToSQL缺失updateKey字段值
我是Apache NiFi新手,搭建了源MySQL到目标MySQL的同步流,已经将ConvertJSONToSQL的Transfer field Names设为true,但仍然报错:
ConvertJSONToSQL Json does not have a value for updateKey column
相关截图:
- 流截图:

- ConvertJSONToSQL配置:

- JSON数据:

- 源表结构:

- 目标表结构:

- EvaluateJsonPath配置:

问题根源及解决步骤
核心问题是ConvertJSONToSQL找不到配置的updateKey对应的字段值,结合截图信息,按以下步骤排查:
修正字段大小写匹配
你在ConvertJSONToSQL里将Update Key设为小写id,但JSON数据里的对应字段是大写ID。开启Transfer field Names=true后NiFi会严格区分字段大小写,解决方法二选一:- 把ConvertJSONToSQL的Update Key改为大写
ID,和JSON字段名一致 - 调整EvaluateJsonPath配置,给
$.ID设置别名id,让输出JSON的字段名与Update Key匹配
- 把ConvertJSONToSQL的Update Key改为大写
检查EvaluateJsonPath输出结构
当前EvaluateJsonPath提取的是$.ID,输出JSON字段为ID,而目标表主键是小写id。只需在EvaluateJsonPath中给$.ID设置别名id,就能让输出JSON的字段名与目标表主键、Update Key对齐。确认所有FlowFile包含主键字段
添加LogAttribute处理器打印FlowFile内容,确保所有待同步的数据里都存在对应的主键字段(id或ID),没有缺失情况。对齐目标表主键名称
目标表主键为小写id,因此ConvertJSONToSQL的Update Key必须与该名称完全一致,同时JSON中的对应字段名也要匹配,大小写不能出错。
内容的提问来源于stack exchange,提问作者Muddassir Rahman

