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
- Check the wrapped cause for the underlying SQL/database error
- Verify the repository user has INSERT/UPDATE privileges on r_step_attribute
- 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
- Use a repository account with write privileges
- Retry saves on transient DB failures
- Validate attribute lengths against repository column sizes
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
- PropertyInputMeta.Exception.ErrorSavingToRepository
- Unable to load step type 'mail' from the repository with…
- Unable to save step type 'mail' to the repository for…
- ZipFileMeta.Exception.UnableToSaveStepInfo
- AbortMeta.Exception.UnableToSaveStepInfoToRepository
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)