pentaho/pentaho-kettle · error · KettleException

Unable to load job entry of type 'Mysql Bulk Load' to the…

Error message

Unable to load job entry of type 'Mysql Bulk Load' to the repository for id_job=

What it means

KettleException thrown by JobEntryMysqlBulkFile.saveRep() when writing this entry's attributes to the repository fails with a KettleDatabaseException, including persisting the connection via saveDatabaseMetaJobEntryAttribute. It is a repository write failure while saving the 'Mysql Bulk Load' entry.

Solutions

  1. Examine the wrapped KettleDatabaseException cause and fix the JDBC-level problem (connectivity, permissions, constraints).
  2. Ensure the entry's database connection is valid and saved before saving the job.
  3. Restore write access for the repository user on the R_* attribute tables.
  4. Retry the save after the repository is healthy.
Defensive patterns

Strategy: try-catch

Validate before calling

// before save: ensure rep is connected and connection is set
if ( !rep.isConnected() ) rep.connect();
if ( jobEntry.getDatabaseConnection() == null ) throw new KettleValidationException( "no connection set on entry" );

Try / catch

try { jobEntry.saveRep( rep, metaStore, idJob ); } catch ( KettleException e ) { logError( "Repository save failed: " + e.getCause(), e ); /* retry after fixing DB */ }

Prevention

When it happens

Trigger: Calling saveRep() when any saveJobEntryAttribute call or saveDatabaseMetaJobEntryAttribute(id_job, getObjectId(), "connection", "id_database", connection) throws — DB downtime, constraint violations, or an unsaved/unpersistable connection object.

Common situations: Saving during repository maintenance/downtime; repository account lost write privileges; the entry references a connection that cannot be persisted.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/mysqlbulkfile/JobEntryMysqlBulkFile.java:199

      rep.saveJobEntryAttribute( id_job, getObjectId(), "schemaname", schemaname );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "tablename", tablename );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "filename", filename );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "separator", separator );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "enclosed", enclosed );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "lineterminated", lineterminated );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "limitlines", limitlines );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "listcolumn", listcolumn );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "highpriority", highpriority );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "optionenclosed", optionenclosed );

      rep.saveJobEntryAttribute( id_job, getObjectId(), "outdumpvalue", outdumpvalue );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "iffileexists", iffileexists );

      rep.saveJobEntryAttribute( id_job, getObjectId(), "addfiletoresult", addfiletoresult );

      rep.saveDatabaseMetaJobEntryAttribute( id_job, getObjectId(), "connection", "id_database", connection );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException(
        "Unable to load job entry of type 'Mysql Bulk Load' to the repository for id_job=" + id_job, dbe );
    }
  }

  public void setTablename( String tablename ) {
    this.tablename = tablename;
  }

  public void setSchemaname( String schemaname ) {
    this.schemaname = schemaname;
  }

  public String getTablename() {
    return tablename;
  }

  public String getSchemaname() {
    return schemaname;

View on GitHub (pinned to f3058517a1)