{"record":{"id":"975b8e241ecac07b","repo":"pentaho/pentaho-kettle","slug":"unable-to-find-the-database-connection-type","errorCode":null,"errorMessage":"Unable to find the database connection type","messagePattern":"Unable to find the database connection type","errorType":"exception","errorClass":"MetaStoreException","httpStatus":null,"severity":"error","filePath":"core/src/main/java/org/pentaho/di/metastore/DatabaseMetaStoreUtil.java","lineNumber":119,"sourceCode":"    //\n    elementType.setName( PentahoDefaults.DATABASE_CONNECTION_ELEMENT_TYPE_NAME );\n    elementType.setDescription( PentahoDefaults.DATABASE_CONNECTION_ELEMENT_TYPE_DESCRIPTION );\n    return elementType;\n  }\n\n  public static IMetaStoreElement populateDatabaseElement( IMetaStore metaStore, DatabaseMeta databaseMeta ) throws MetaStoreException {\n\n    if ( !metaStore.namespaceExists( PentahoDefaults.NAMESPACE ) ) {\n      throw new MetaStoreException( \"Namespace '\" + PentahoDefaults.NAMESPACE + \"' doesn't exist.\" );\n    }\n\n    // If the data type doesn't exist, error out...\n    //\n    IMetaStoreElementType elementType =\n      metaStore.getElementTypeByName(\n        PentahoDefaults.NAMESPACE, PentahoDefaults.DATABASE_CONNECTION_ELEMENT_TYPE_NAME );\n    if ( elementType == null ) {\n      throw new MetaStoreException( \"Unable to find the database connection type\" );\n    }\n\n    elementType = populateDatabaseElementType( metaStore );\n\n    // generate a new database element and populate it with metadata\n    //\n    IMetaStoreElement element = metaStore.newElement( elementType, databaseMeta.getName(), null );\n\n    element.addChild( metaStore.newAttribute( MetaStoreConst.DB_ATTR_ID_PLUGIN_ID, databaseMeta.getPluginId() ) );\n\n    element.setName( databaseMeta.getName() );\n\n    element.addChild( metaStore\n      .newAttribute( MetaStoreConst.DB_ATTR_ID_DESCRIPTION, databaseMeta.getDescription() ) );\n    element.addChild( metaStore.newAttribute( MetaStoreConst.DB_ATTR_ID_ACCESS_TYPE, databaseMeta\n      .getAccessTypeDesc() ) );\n    element.addChild( metaStore.newAttribute( MetaStoreConst.DB_ATTR_ID_HOSTNAME, databaseMeta.getHostname() ) );\n    element.addChild( metaStore.newAttribute( MetaStoreConst.DB_ATTR_ID_PORT, databaseMeta","sourceCodeStart":101,"sourceCodeEnd":137,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/core/src/main/java/org/pentaho/di/metastore/DatabaseMetaStoreUtil.java#L101-L137","documentation":"After confirming the namespace exists, populateDatabaseElement() looks up the element type named PentahoDefaults.DATABASE_CONNECTION_ELEMENT_TYPE_NAME. If the metastore has no such element type it throws this MetaStoreException. The database-connection element type must be registered in the namespace before elements can be created.","triggerScenarios":"Calling populateDatabaseElement()/databaseElement() where the namespace exists but getElementTypeByName(namespace, DATABASE_CONNECTION_ELEMENT_TYPE_NAME) returns null — the type was never created or was deleted.","commonSituations":"Namespace created manually without registering the database-connection element type; metastore partially initialized; type definition changed between product versions.","solutions":["Call DatabaseMetaStoreUtil.populateDatabaseElementType( metaStore ) to create/ensure the element type","Verify with metaStore.getElementTypeByName( PentahoDefaults.NAMESPACE, PentahoDefaults.DATABASE_CONNECTION_ELEMENT_TYPE_NAME ) before storing","Re-run metastore initialization for the namespace"],"exampleFix":"// before\nmetaStore.createNamespace( PentahoDefaults.NAMESPACE ); // namespace only, no type\n// after\nmetaStore.createNamespace( PentahoDefaults.NAMESPACE );\nDatabaseMetaStoreUtil.populateDatabaseElementType( metaStore );","handlingStrategy":"validation","validationCode":"if ( metaStore.getElementTypeByName( PentahoDefaults.NAMESPACE,\n    PentahoDefaults.DATABASE_CONNECTION_ELEMENT_TYPE_NAME ) == null ) {\n  DatabaseMetaStoreUtil.populateDatabaseElementType( metaStore );\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always call populateDatabaseElementType() after creating the namespace","Run metastore self-checks at startup","Avoid deleting element types manually"],"tags":["metastore","element-type","initialization"],"backgroundTag":"resource-not-found","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}