Budibase/budibase · error

Datasource integration does not support verb: ${queryVerb}

Error message

Datasource integration does not support verb: ${queryVerb}

What it means

Query execution looks up the handler for the query's verb on the datasource's integration class (integration[queryVerb]). Datasource integrations only implement the verbs they support (e.g. REST supports read/create/update/delete; SQL supports read/create/update/delete; some integrations lack certain verbs). If the verb function is missing, a plain Error naming the verb is thrown.

Source

Thrown at packages/server/src/threads/query.ts:228

        query.rawPath = rawPath
      }
      if (this.includeRequest && previewSource) {
        preview = await this.buildPreview(previewSource, parameters).catch(
          err => {
            console.warn("Failed to build request preview", err)
            return undefined
          }
        )
      }
    }
    // Add pagination values for REST queries
    if (this.pagination) {
      query.paginationValues = this.pagination
    }

    const fn = integration[queryVerb]
    if (!fn) {
      throw new Error(
        `Datasource integration does not support verb: ${queryVerb}`
      )
    }

    let output = threadUtils.formatResponse(
      await fn.bind(integration)(query, {
        includeRequest: this.includeRequest,
        previewFields: preview?.fields,
        previewConfig: preview?.config,
      })
    )
    let rows = output as Row[],
      info = undefined,
      extra = undefined,
      pagination = undefined
    if (threadUtils.hasExtraData(output)) {
      rows = output.data
      info = output.info

View on GitHub (pinned to a81a902e9a)

Solutions

  1. Check the query's datasource source and its integration to see which verbs are implemented; re-create the query with a supported verb (read/create/update/delete)
  2. Open the query in the builder and fix its verb to one the datasource supports
  3. If importing queries, remap unsupported verbs to equivalents before execution

Example fix

// before
await sdk.queries.execute({ ...query, queryVerb: 'patch' }) // integration has no 'patch'
// after
await sdk.queries.execute({ ...query, queryVerb: 'update' })
Defensive patterns

Strategy: validation

Validate before calling

const integration = integrations[datasource.source]
if (!integration?.[query.queryVerb]) {
  throw new Error(`Verb '${query.queryVerb}' not supported by ${datasource.source}`)
}

Type guard

function verbSupported(integration, verb) {
  return typeof integration?.[verb] === 'function'
}

Try / catch

try {
  await sdk.queries.execute(queryId, params)
} catch (e) {
  if (e?.message?.startsWith('Datasource integration does not support verb')) {
    // recreate query with a supported verb
  } else throw e
}

Prevention

When it happens

Trigger: Executing a query whose queryVerb (e.g. 'write', 'patch', or a verb the integration never defined) has no corresponding method on the integration resolved from the datasource source — e.g. running a query with verb 'create' against an integration that only implements read, or a verb string that doesn't match any integration method.

Common situations: Queries built or imported from other datasource types; verb renamed/changed across Budibase versions; REST queries saved with an unusual method; scripts calling the query executor directly with an arbitrary verb string.

Related errors


AI-assisted analysis of Budibase/budibase@a81a902e9a (2026-08-29). Data as JSON: /api/errors/311948fcade01c40. Report an issue: GitHub.