pentaho/pentaho-kettle · error · KettleException

Unable to load job entry of type 'table exists' from the…

Error message

Unable to load job entry of type 'table exists' from the repository for id_jobentry=

What it means

KettleException thrown by JobEntryMysqlBulkFile.loadRep() when reading this entry's attributes from the repository fails with a KettleDatabaseException, including resolving the stored connection via loadDatabaseMetaFromJobEntryAttribute. It means the repository cannot supply the saved definition of the entry.

Solutions

  1. Read the wrapped KettleDatabaseException cause and fix the underlying repository query/connection problem.
  2. Recreate the missing database connection so id_database resolves.
  3. Run repository schema repair/upgrade to restore attribute rows.
  4. Delete and recreate the job entry if its repository rows are corrupt.
Defensive patterns

Strategy: try-catch

Validate before calling

// before load: verify attribute rows exist
if ( rep.getJobEntryAttributeInteger( id_jobentry, "iffileexists" ) < 0 ) logWarning( "attribute missing for job entry " + id_jobentry );

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 the job from a repository when attribute reads (getJobEntryAttributeInteger for iffileexists, booleans, etc.) or loadDatabaseMetaFromJobEntryAttribute(id_jobentry, "connection", "id_database", databases) throws.

Common situations: Referenced database connection deleted from the repository; corrupted or partially saved attribute rows; repository DB unreachable or permission restricted.

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/0354e75e8099769b. Report an issue: GitHub.

Appendix: source

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

      tablename = rep.getJobEntryAttributeString( id_jobentry, "tablename" );
      filename = rep.getJobEntryAttributeString( id_jobentry, "filename" );
      separator = rep.getJobEntryAttributeString( id_jobentry, "separator" );
      enclosed = rep.getJobEntryAttributeString( id_jobentry, "enclosed" );
      lineterminated = rep.getJobEntryAttributeString( id_jobentry, "lineterminated" );
      limitlines = rep.getJobEntryAttributeString( id_jobentry, "limitlines" );
      listcolumn = rep.getJobEntryAttributeString( id_jobentry, "listcolumn" );
      highpriority = rep.getJobEntryAttributeBoolean( id_jobentry, "highpriority" );
      optionenclosed = rep.getJobEntryAttributeBoolean( id_jobentry, "optionenclosed" );

      outdumpvalue = (int) rep.getJobEntryAttributeInteger( id_jobentry, "outdumpvalue" );

      iffileexists = (int) rep.getJobEntryAttributeInteger( id_jobentry, "iffileexists" );

      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 'table exists' 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(), "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 );

View on GitHub (pinned to f3058517a1)