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
- Verify the table exists: connect to MonetDB and run SELECT * FROM information_schema.tables WHERE table_name='<name>'
- Check schema and table name values in the step dialog (case sensitivity and quoting matter)
- Confirm the step's database connection points to the intended host/database
- 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
- Resolve all variables (${TABLE}) before running and fail fast on empty substitution
- Verify schema/table names against information_schema when designing the step
- Pin the step's database connection to the intended environment (avoid silent connection swaps)
- Use environment-specific configuration files so dev/prod table names are managed centrally
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
- An error occurred writing data to the MonetDB API (MAPI)…
- Database connection not found:
- database type with plugin id [] couldn't be found!
- Error loading data:
- Error while creating table
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)