Budibase/budibase · error · Error
No datasource implementation found called: "${integration}"
Error message
No datasource implementation found called: "${integration}" What it means
getIntegration() resolves a datasource SourceName to its implementation class from the built-in INTEGRATIONS registry. If the name is not registered, it falls back to loading a self-hosted datasource plugin; only when neither path finds a match does it throw 'No datasource implementation found called: "<integration>"'. This means Budibase simply has no connector for that source name in the current deployment.
Source
Thrown at packages/server/src/integrations/index.ts:137
): Promise<IntegrationBaseConstructor> {
if (INTEGRATIONS[integration]) {
return INTEGRATIONS[integration]
}
if (env.SELF_HOSTED) {
const plugins = await sdk.plugins.fetch(PluginType.DATASOURCE)
for (let plugin of plugins) {
if (plugin.name === integration) {
// need to use commonJS require due to its dynamic runtime nature
const retrieved = await getDatasourcePlugin(plugin)
if (retrieved.integration) {
return retrieved.integration
} else {
return retrieved
}
}
}
}
throw new Error(`No datasource implementation found called: "${integration}"`)
}
export default {
getDefinitions,
getIntegration,
}
View on GitHub (pinned to a81a902e9a)
Solutions
- Check the datasource's source value against SourceName / getDefinitions() output and correct it to a supported name
- If it should be a plugin datasource, verify the plugin is installed and that SELF_HOSTED=true so the plugin registry is consulted
- Reinstall or fix the failing plugin so it exposes integration (its module must resolve at runtime)
- Upgrade/downgrade Budibase so the integration named in the app definition exists; if migrating apps, re-create the datasource with a supported connector
Example fix
// before: referencing a name that is not a registered integration
const integration = await getIntegration("PostgresSQL" as SourceName)
// after: use the exact SourceName value
const integration = await getIntegration(SourceName.POSTGRES) Defensive patterns
Strategy: validation
Validate before calling
import { getDefinitions, getIntegration, SourceName } from "@budibase/types"
const definitions = await getDefinitions()
if (!definitions[source]) {
throw new Error(`Unsupported datasource: ${source}`)
}
await getIntegration(source) Type guard
function isSupportedSource(source: string): source is SourceName {
return Object.values(SourceName).includes(source as SourceName)
} Try / catch
try {
const integration = await getIntegration(source)
return new integration(config)
} catch (err) {
if (err.message.startsWith("No datasource implementation found")) {
throw new Error(`Datasource "${source}" is not installed in this deployment`, { cause: err })
}
throw err
} Prevention
- Only reference SourceName enum values, never free-form strings
- Keep datasource plugin installs in sync across environments (self-hosted requires SELF_HOSTED=true)
- After importing/migrating apps, verify every datasource resolves via getDefinitions()
- Pin Budibase versions consistently so integration registries match app definitions
When it happens
Trigger: Passing a SourceName that is not in the INTEGRATIONS map (typo, custom string, removed/renamed integration), or referencing a datasource plugin that is not installed/loaded while running self-hosted (plugins.fetch returns nothing matching), or calling getIntegration on a cloud (non SELF_HOSTED) deployment where plugin fallback is skipped.
Common situations: A datasource document in CouchDB references an integration from an older/newer Budibase version; a custom plugin was uninstalled or failed to load; user data was migrated between environments and carries an unsupported source name; hand-edited or imported app definitions contain an invalid sourceId.
Related errors
- No datasource provided for external query
- Workspace DB not found - self-host users using cloud don't h
- CouchDB username not set
- CouchDB password not set
- No google configuration found
AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29).
Data as JSON: /api/errors/4256ac9fbf1815b5.
Report an issue: GitHub.