{"record":{"id":"1a0d9cbe826ab4c4","repo":"pentaho/pentaho-kettle","slug":"unable-to-save-job-entry-of-type-trans-to-the-repository-for","errorCode":null,"errorMessage":"Unable to save job entry of type 'trans' to the repository for id_job=","messagePattern":"Unable to save job entry of type 'trans' to the repository for id_job=","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/trans/JobEntryTrans.java","lineNumber":587,"sourceCode":"          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"argument\", arguments[ i ] );\n        }\n      }\n\n      // Save the parameters...\n      if ( parameters != null ) {\n        for ( int i = 0; i < parameters.length; i++ ) {\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"parameter_name\", parameters[ i ] );\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"parameter_stream_name\", Const.NVL(\n            parameterFieldNames[ i ], \"\" ) );\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"parameter_value\", Const.NVL(\n            parameterValues[ i ], \"\" ) );\n        }\n      }\n\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"pass_all_parameters\", passingAllParameters );\n\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException(\n        \"Unable to save job entry of type 'trans' to the repository for id_job=\" + id_job, dbe );\n    }\n  }\n\n  @Override\n  public void clear() {\n    super.clear();\n\n    specificationMethod = ObjectLocationSpecificationMethod.FILENAME;\n    transname = null;\n    filename = null;\n    directory = null;\n    arguments = null;\n    argFromPrevious = false;\n    execPerRow = false;\n    addDate = false;\n    addTime = false;\n    logfile = null;","sourceCodeStart":569,"sourceCodeEnd":605,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/trans/JobEntryTrans.java#L569-L605","documentation":"Thrown by JobEntryTrans.saveRep when persisting a Transformation job entry's attributes (including per-parameter rows and 'pass_all_parameters') to the repository fails with a KettleDatabaseException. It means the repository rejected the write. The original database exception is wrapped as the cause.","triggerScenarios":"Calling saveRep when the repository database is unavailable, a parameter row insert violates constraints, column sizes are exceeded by long transformation names/paths, or the connection drops mid-save.","commonSituations":"Long transformation paths exceeding repository column widths; read-only DB credentials; connection pool exhaustion during large job saves; corrupted repository tables after failed upgrades.","solutions":["Verify the repository database is reachable and writable","Check the wrapped KettleDatabaseException for the specific failing attribute/SQL error","Shorten transformation names/paths that exceed column limits","Repair/upgrade the repository schema and retry the save"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if ( entry.getTransname() != null && entry.getTransname().length() > 255 ) { throw new IllegalStateException( \"Transformation name too long for repository\" ); }","typeGuard":null,"tryCatchPattern":"try { entry.saveRep( rep, metaStore, id_job ); } catch ( KettleException e ) { log.error( \"Failed saving trans entry for job \" + id_job, e.getCause() ); throw e; }","preventionTips":["Shorten transformation names/paths near column limits","Use writable DB credentials","Upgrade repository schema before saving new attribute types","Watch connection pool saturation during large saves"],"tags":["kettle","repository","database"],"backgroundTag":"database-write-failed","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"}