{"record":{"id":"b739994e17b64801","repo":"pentaho/pentaho-kettle","slug":"synchronizeaftermergemeta-exception-tablenotspecified","errorCode":null,"errorMessage":"SynchronizeAfterMergeMeta.Exception.TableNotSpecified","messagePattern":"SynchronizeAfterMergeMeta\\.Exception\\.TableNotSpecified","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMergeMeta.java","lineNumber":1051,"sourceCode":"  public RowMetaInterface getRequiredFields( VariableSpace space ) throws KettleException {\n    String realTableName = space.environmentSubstitute( tableName );\n    String realSchemaName = space.environmentSubstitute( schemaName );\n\n    if ( databaseMeta != null ) {\n      Database db = new Database( loggingObject, databaseMeta );\n      try {\n        db.connect();\n\n        if ( !Utils.isEmpty( realTableName ) ) {\n          // Check if this table exists...\n          if ( db.checkTableExists( realSchemaName, realTableName ) ) {\n            return db.getTableFieldsMeta( realSchemaName, realTableName );\n          } else {\n            throw new KettleException( BaseMessages.getString(\n              PKG, \"SynchronizeAfterMergeMeta.Exception.TableNotFound\" ) );\n          }\n        } else {\n          throw new KettleException( BaseMessages.getString(\n            PKG, \"SynchronizeAfterMergeMeta.Exception.TableNotSpecified\" ) );\n        }\n      } catch ( Exception e ) {\n        throw new KettleException( BaseMessages.getString(\n          PKG, \"SynchronizeAfterMergeMeta.Exception.ErrorGettingFields\" ), e );\n      } finally {\n        db.close();\n      }\n    } else {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"SynchronizeAfterMergeMeta.Exception.ConnectionNotDefined\" ) );\n    }\n\n  }\n\n  /**\n   * @return the schemaName\n   */","sourceCodeStart":1033,"sourceCodeEnd":1069,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/synchronizeaftermerge/SynchronizeAfterMergeMeta.java#L1033-L1069","documentation":"Thrown by SynchronizeAfterMergeMeta.getTableFieldsMeta when the step's target table name resolves to empty/null, so the field metadata lookup cannot even be attempted. The library requires a concrete table name to query field layout from the database.","triggerScenarios":"Calling getTableFieldsMeta() while the step's tablename field (after variable resolution) is null or empty string; a transformation saved without the table field populated.","commonSituations":"Transformation XML lost the table value during export/import; user filled schema but left table blank in the Synchronize After Merge dialog; variable bound to ${TABLE_NAME} not defined in the runtime environment.","solutions":["Open the Synchronize After Merge step dialog and set the Target table field","Verify the variable used for the table name is defined in the runtime environment/transformation properties","Re-check the transformation XML/repository entry to ensure <table> is persisted","Add a default table name in setDefault() or validation before calling getTableFieldsMeta"],"exampleFix":"// before\nmeta.setTablename(\"${TABLE_NAME}\"); // variable never defined\n// after\nmeta.setTablename(\"customers\"); // or ensure variables.xml defines TABLE_NAME","handlingStrategy":"validation","validationCode":"if (meta.getTablename() == null || meta.getTablename().trim().isEmpty()) { throw new IllegalArgumentException(\"Synchronize After Merge: target table must be set\"); }","typeGuard":null,"tryCatchPattern":"try { fields = meta.getTableFieldsMeta(row, realSchema, realTable); } catch (KettleException e) { logError(\"Table not specified or lookup failed: \" + e.getMessage()); }","preventionTips":["Always fill the target table field before saving the transformation","Use literal names or verify variables are defined at runtime","Run the step dialog's field-getter to validate config early"],"tags":["kettle","database","configuration","missing-table"],"backgroundTag":"missing-required-config-field","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}