升级FME至2021.2后脚本提示「未指定SCHEMA数据集」如何解决?
FME 2021.2升级后SCHEMA_DATASET缺失错误解决办法
问题背景
升级FME从2016版本到2021.2后,运行原有脚本时触发错误提示:
No SCHEMA dataset name was specified (couldn't find a value for SCHEMA_2_DATASET' or SCHEMA_DATASET')
旧版本中仅填写部分参数(Project Name、Outline SHP、Parcel SHP #1、Attribute Name #1),其余留空即可正常运行,但新版本严格校验参数有效性导致报错。脚本中的DATASET定义如下:
#! <DATASET #! NAME="SCHEMA_1" #! OVERRIDE="-SCHEMA_1_DATASET" #! DATASET="abc.shp" #! /> #! <DATASET #! NAME="SHAPE_1" #! OVERRIDE="-SHAPE_1_DATASET" #! DATASET="def.shp" #! /> #! <DATASET #! NAME="SCHEMA_2" #! OVERRIDE="-SCHEMA_2_DATASET" #! DATASET="ghi.shp" #! /> #! <DATASET #! NAME="SHAPE_2" #! OVERRIDE="-SHAPE_2_DATASET" #! DATASET="jkl.shp" #! /> #! <DATASET #! NAME="SCHEMA_3" #! OVERRIDE="-SCHEMA_3_DATASET" #! DATASET="mno.shp" #! />
原因分析
FME 2021.2对参数的必填性校验逻辑进行了更新,旧版本允许未赋值的参数以NULL状态运行,而新版本会强制检查所有定义的DATASET参数是否存在有效值,未填写的SCHEMA_2、SCHEMA_3触发了校验规则。
解决方案
1. 标记未使用参数为可选
为不需要的SCHEMA_2、SCHEMA_3及对应SHAPE参数添加OPTIONAL="YES"属性,同时将默认DATASET设为空字符串,明确告知FME这些参数为可选,空值不会触发错误。修改后的代码片段:
#! <DATASET #! NAME="SCHEMA_2" #! OVERRIDE="-SCHEMA_2_DATASET" #! DATASET="" #! OPTIONAL="YES" #! /> #! <DATASET #! NAME="SHAPE_2" #! OVERRIDE="-SHAPE_2_DATASET" #! DATASET="" #! OPTIONAL="YES" #! /> #! <DATASET #! NAME="SCHEMA_3" #! OVERRIDE="-SCHEMA_3_DATASET" #! DATASET="" #! OPTIONAL="YES" #! />
2. 删除未使用的DATASET定义
如果SCHEMA_2、SCHEMA_3及对应的SHAPE_2参数完全不需要,直接从脚本中删除这些DATASET块,彻底移除不必要的校验项。
3. 临时赋值占位文件(不推荐)
若不想修改脚本,可在运行时为未填写的SCHEMA参数指定一个空的shapefile作为占位,但这种方法会增加操作步骤,长期维护性较差。
内容的提问来源于stack exchange,提问作者Mritunjay
相关产品推荐
相关产品推荐

