pentaho/pentaho-kettle · error · KettleException

Unable to save step information to the repository for…

Error message

Unable to save step information to the repository for id_step=

What it means

Outer catch-all in ExcelWriterStepMeta.saveRep: an exception occurred while persisting the output-field definitions to the repository. The message includes the step id; the underlying exception is attached as the cause.

Solutions

  1. Check the wrapped cause for the underlying SQL/database error
  2. Verify the repository user has INSERT/UPDATE privileges on r_step_attribute
  3. Confirm the transformation still exists in the repository (valid id_step) and retry
Defensive patterns

Strategy: try-catch

Try / catch

try { meta.saveRep( rep, metaStore, idTrans, idStep ); } catch ( KettleException e ) { log.error( "Save failed for id_step " + idStep + ": " + e.getCause(), e ); }

Prevention

When it happens

Trigger: Calling saveRep when the repository DB is read-only, the connection dropped, a field value exceeds column size, or id_step no longer exists.

Common situations: Read-only repository accounts; network blips during save of transformations; too-long field names/driver constraints.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/519f77d32bb78178. Report an issue: GitHub.

Appendix: source

Thrown at plugins/excel/core/src/main/java/org/pentaho/di/trans/steps/excelwriter/ExcelWriterStepMeta.java:1126

      for ( int i = 0; i < outputFields.length; i++ ) {
        ExcelWriterStepField field = outputFields[i];

        rep.saveStepAttribute( id_transformation, id_step, i, "field_name", field.getName() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_type", field.getTypeDesc() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_format", field.getFormat() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_title", field.getTitle() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_title_style_cell", field.getTitleStyleCell() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_style_cell", field.getStyleCell() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_comment_field", field.getCommentField() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_comment_author_field", field
          .getCommentAuthorField() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_formula", field.isFormula() );
        rep.saveStepAttribute( id_transformation, id_step, i, "field_hyperlink_field", field.getHyperlinkField() );

      }
    } catch ( Exception e ) {
      throw new KettleException( "Unable to save step information to the repository for id_step=" + id_step, e );
    }
  }

  @Override
  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,
    RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
    Repository repository, IMetaStore metaStore ) {
    CheckResult cr;

    // Check output fields
    if ( prev != null && prev.size() > 0 ) {
      cr =
        new CheckResult( CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString(
          PKG, "ExcelWriterStepMeta.CheckResult.FieldsReceived", "" + prev.size() ), stepMeta );
      remarks.add( cr );

      String error_message = "";
      boolean error_found = false;

View on GitHub (pinned to f3058517a1)