pentaho/pentaho-kettle · error · KettleException

MonetDBBulkLoaderMeta.Exception.TableNotFound

MonetDBBulkLoaderMeta.Exception.TableNotFound

Error message

MonetDBBulkLoaderMeta.Exception.TableNotFound

What it means

During field discovery, MonetDBBulkLoaderMeta connects to the configured database and checks whether the quoted schema.table combination exists via db.checkTableExists(); if it does not, it throws KettleException 'TableNotFound'. This is a fail-fast guard before attempting getTableFields() on a missing table.

Solutions

  1. Verify the table exists: connect to MonetDB and run SELECT * FROM information_schema.tables WHERE table_name='<name>'
  2. Check schema and table name values in the step dialog (case sensitivity and quoting matter)
  3. Confirm the step's database connection points to the intended host/database
  4. Create the missing table or update the step to point to the correct one

Example fix

// before
String realTableName = environmentSubstitute(tableName);
// after
String realTableName = environmentSubstitute(tableName);
if (realTableName == null || realTableName.isEmpty()) {
  throw new KettleException("Table name must be set before reading fields");
}
// ensure table exists via db.checkTableExists(schemaTable) before getTableFields
Defensive patterns

Strategy: validation

Validate before calling

Database db = new Database(parentLoggingObject, databaseMeta);
db.connect();
String schemaTable = databaseMeta.getQuotedSchemaTableCombination(
    environmentSubstitute(schemaName), environmentSubstitute(tableName));
if (!db.checkTableExists(schemaTable)) {
  throw new KettleException("Target table " + schemaTable + " does not exist");
}
db.disconnect();

Prevention

When it happens

Trigger: Calling the getTableFields/constructor path when databaseMeta is configured with a schemaName+tableName whose quoted combination does not exist in the target MonetDB database at check time.

Common situations: Typo in the table name; wrong schema name; table created in a different database/connection; table dropped or renamed after the transformation was designed; connecting with credentials that resolve to a different database.

Understand the failure class

Background: Record Not Found Errors: "not found", RecordNotFound, and "was not found" — what they mean and how to fix them — this error's family across 28 libraries.

Related errors


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

Appendix: source

Thrown at plugins/monet-db-bulk-loader/impl/src/main/java/org/pentaho/di/trans/steps/monetdbbulkloader/MonetDBBulkLoaderMeta.java:783

  }

  public RowMetaInterface getRequiredFields( VariableSpace space ) throws KettleException {
    String realTableName = space.environmentSubstitute( tableName );
    String realSchemaName = space.environmentSubstitute( schemaName );

    if ( databaseMeta != null ) {
      Database db = new Database( loggingObject, databaseMeta );
      try {
        db.connect();

        if ( !Utils.isEmpty( realTableName ) ) {
          String schemaTable = databaseMeta.getQuotedSchemaTableCombination( realSchemaName, realTableName );

          // Check if this table exists...
          if ( db.checkTableExists( schemaTable ) ) {
            return db.getTableFields( schemaTable );
          } else {
            throw new KettleException( BaseMessages.getString(
                PKG, "MonetDBBulkLoaderMeta.Exception.TableNotFound" ) );
          }
        } else {
          throw new KettleException( BaseMessages.getString(
              PKG, "MonetDBBulkLoaderMeta.Exception.TableNotSpecified" ) );
        }
      } catch ( Exception e ) {
        throw new KettleException( BaseMessages.getString(
            PKG, "MonetDBBulkLoaderMeta.Exception.ErrorGettingFields" ), e );
      } finally {
        db.close();
      }
    } else {
      throw new KettleException( BaseMessages.getString(
          PKG, "MonetDBBulkLoaderMeta.Exception.ConnectionNotDefined" ) );
    }

  }

View on GitHub (pinned to f3058517a1)