pentaho/pentaho-kettle · error · KettleException

Unable to load job entry of type 'Mysql bulk load' from the…

Error message

Unable to load job entry of type 'Mysql bulk load' from the repository for id_jobentry=

What it means

KettleException thrown by JobEntryMysqlBulkLoad.loadRep() when loading this entry's attributes from the repository fails with a KettleDatabaseException, including resolving the stored connection metadata. The saved definition of the 'Mysql bulk load' entry cannot be read from the repository.

Solutions

  1. Inspect the wrapped KettleDatabaseException cause to identify and fix the failing repository query.
  2. Recreate the referenced database connection so id_database resolves.
  3. Run repository schema repair/upgrade to restore missing rows.
  4. Recreate the job entry in the repository if rows are corrupted.
Defensive patterns

Strategy: try-catch

Validate before calling

// before load: confirm the connection reference resolves
if ( rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, "connection", "id_database", databases ) == null ) {
  logWarning( "connection for job entry " + id_jobentry + " not resolvable" );
}

Try / catch

try { jobEntry.loadRep( rep, metaStore, idJobentry, databases, slaveServers ); } catch ( KettleException e ) { logError( "Repository load failed: " + e.getCause(), e ); }

Prevention

When it happens

Trigger: Loading from a repository when getJobEntryAttributeBoolean/Integer reads or loadDatabaseMetaFromJobEntryAttribute(id_jobentry, "connection", "id_database", databases) throws — missing attribute rows, dangling id_database reference, or repository failure.

Common situations: Connection deleted from repository while jobs still reference it; corrupted attribute rows from a failed save; repository access/permission issues.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


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

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/job/entries/mysqlbulkload/JobEntryMysqlBulkLoad.java:182

    try {
      schemaname = rep.getJobEntryAttributeString( id_jobentry, "schemaname" );
      tablename = rep.getJobEntryAttributeString( id_jobentry, "tablename" );
      filename = rep.getJobEntryAttributeString( id_jobentry, "filename" );
      separator = rep.getJobEntryAttributeString( id_jobentry, "separator" );
      enclosed = rep.getJobEntryAttributeString( id_jobentry, "enclosed" );
      escaped = rep.getJobEntryAttributeString( id_jobentry, "escaped" );
      linestarted = rep.getJobEntryAttributeString( id_jobentry, "linestarted" );
      lineterminated = rep.getJobEntryAttributeString( id_jobentry, "lineterminated" );
      replacedata = rep.getJobEntryAttributeBoolean( id_jobentry, "replacedata" );
      ignorelines = rep.getJobEntryAttributeString( id_jobentry, "ignorelines" );
      listattribut = rep.getJobEntryAttributeString( id_jobentry, "listattribut" );
      localinfile = rep.getJobEntryAttributeBoolean( id_jobentry, "localinfile" );
      prorityvalue = (int) rep.getJobEntryAttributeInteger( id_jobentry, "prorityvalue" );
      addfiletoresult = rep.getJobEntryAttributeBoolean( id_jobentry, "addfiletoresult" );

      connection = rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, "connection", "id_database", databases );
    } catch ( KettleDatabaseException dbe ) {
      throw new KettleException(
        "Unable to load job entry of type 'Mysql bulk load' from the repository for id_jobentry=" + id_jobentry,
        dbe );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
    try {
      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(), "escaped", escaped );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "linestarted", linestarted );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "lineterminated", lineterminated );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "replacedata", replacedata );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "ignorelines", ignorelines );
      rep.saveJobEntryAttribute( id_job, getObjectId(), "listattribut", listattribut );

View on GitHub (pinned to f3058517a1)