pentaho/pentaho-kettle · error · KettleException

MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined

MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined

Error message

MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined

What it means

Thrown by verifyDatabaseConnection() when MonetDBBulkLoaderMeta.getDatabaseMeta() returns null, meaning the step has no database connection defined. The message is a localized resource key (MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined) from the step's message bundle rather than free text.

Solutions

  1. Open the transformation and assign a MonetDB database connection in the step's Database Connection field
  2. Confirm the shared connection exists in the repository (or spoon.xml/KJB shared connections) and loads correctly
  3. Re-save the transformation after linking the connection

Example fix

// before: running step with no connection set in transformation XML
<connection>null</connection>
// after: reference a defined connection
<connection>MonetDBLocal</connection>
Defensive patterns

Strategy: validation

Validate before calling

// guard before starting the transformation
DatabaseMeta dm = monetDbBulkLoaderMeta.getDatabaseMeta();
if ( dm == null ) { throw new IllegalArgumentException( "Assign a MonetDB connection to the step before running" ); }

Type guard

function hasConnection( MonetDBBulkLoaderMeta m ) { return m != null && m.getDatabaseMeta() != null; }

Try / catch

try { startTransformation(); } catch ( KettleException e ) { if ( "MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined".equals( e.getMessage() ) ) { prompt user to configure the connection; } else rethrow; }

Prevention

When it happens

Trigger: init() calls verifyDatabaseConnection() before the step starts; the transformation was saved without a connection assigned to the MonetDB bulk loader step, or the referenced connection metadata failed to load/resolved to null.

Common situations: Copying a step between transformations without its shared connection; repository metadata missing or renamed connection; exporting a transformation without including the connection definition.

Understand the failure class

Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.

Related errors


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

Appendix: source

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

        }
      }

      if ( log.isRowLevel() ) {
        logRowlevel( Const.CR );
      }

      // reset the buffer pointer...
      //
      data.bufferIndex = 0;
    } catch ( Exception e ) {
      throw new KettleException( "An error occurred writing data to the MonetDB API (MAPI) process", e );
    }
  }

  protected void verifyDatabaseConnection() throws KettleException {
    // Confirming Database Connection is defined.
    if ( meta.getDatabaseMeta() == null ) {
      throw new KettleException( BaseMessages.getString( PKG, "MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined" ) );
    }
  }

  @Override
  public boolean init( StepMetaInterface smi, StepDataInterface sdi ) {
    meta = (MonetDBBulkLoaderMeta) smi;
    data = (MonetDBBulkLoaderData) sdi;

    if ( super.init( smi, sdi ) ) {

      try {
        verifyDatabaseConnection();
      } catch ( KettleException ex ) {
        logError( ex.getMessage() );
        return false;
      }

      data.quote = environmentSubstitute( meta.getFieldEnclosure() );

View on GitHub (pinned to f3058517a1)