pentaho/pentaho-kettle · error · KettleException
LucidDBStreamingLoaderMeta.Exception.TableNotFound
Error message
LucidDBStreamingLoaderMeta.Exception.TableNotFound
What it means
During SQL generation / table-field lookup, the meta class connects to the target database and, if a schema and table name are set, checks db.checkTableExists(schemaTable). When the table does not exist it throws KettleException with the localized 'TableNotFound' message.
Solutions
- Create the target table in LucidDB (or run the step's 'SQL' button to generate the CREATE TABLE DDL).
- Correct the schema/table names in the step dialog, matching case exactly.
- Verify the database connection points to the intended environment.
- Check quoting: quoted identifiers in LucidDB are case-sensitive; use the same case used at CREATE time.
Example fix
// before <schema>SALES</schema><table>FactSalez</table> // after <schema>SALES</schema><table>FACT_SALES</table>
Defensive patterns
Strategy: validation
Validate before calling
Database db = new Database(loggingObject, meta.getDatabaseMeta());
db.connect();
String schemaTable = meta.getDatabaseMeta().getQuotedSchemaTableCombination(schema, table);
if (!db.checkTableExists(schemaTable)) {
throw new KettleException("Target table " + schemaTable + " does not exist; create it before running");
} Try / catch
try {
db.getTableFields(schemaTable);
} catch (KettleException e) {
if (e.getMessage().contains("TableNotFound")) {
// generate DDL via step's SQL button or create table here
}
throw e;
} Prevention
- Run the step's 'SQL' button to pre-generate and execute CREATE TABLE DDL.
- Use environment-specific connection definitions to avoid hitting the wrong DB.
- Match identifier case exactly when quoting schema/table names in LucidDB.
- Add a pre-flight 'Table exists' check step or script in the job.
When it happens
Trigger: getTableFields()/SQL-building path executes checkTableExists on the quoted schema-table combination built from realSchemaName/realTableName and the table is absent in the target LucidDB database.
Common situations: Typo in table or schema name in the step dialog; table dropped or renamed after the transformation was configured; connected to the wrong database/environment (dev vs prod); case-sensitivity mismatch in quoted identifiers.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- AccessInputMeta.Exception.ErrorReadingRepository
- AddSequence.Exception.CouldNotFindNextValueForSequence
- AddSequenceMeta.Exception.UnableToReadStepInfo
- AggregateRowsMeta.Exception.UnexpectedErrorWhileReadingStepInfo
- AnalyticQueryMeta.Exception.UnexpectedErrorInReadingStepInfo…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/3a2c8a39ca2e4713.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/lucid-db-streaming-loader/core/src/main/java/org/pentaho/di/trans/steps/luciddbstreamingloader/LucidDBStreamingLoaderMeta.java:838
}
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, "LucidDBStreamingLoaderMeta.Exception.TableNotFound" ) );
}
} else {
throw new KettleException( BaseMessages.getString(
PKG, "LucidDBStreamingLoaderMeta.Exception.TableNotSpecified" ) );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "LucidDBStreamingLoaderMeta.Exception.ErrorGettingFields" ), e );
} finally {
db.close();
}
} else {
throw new KettleException( BaseMessages.getString(
PKG, "LucidDBStreamingLoaderMeta.Exception.ConnectionNotDefined" ) );
}
}View on GitHub (pinned to f3058517a1)