hasura/graphql-engine · error · NDCValidationError

data connector does not support mutations

Error message

data connector does not support mutations

What it means

The connector does not advertise mutation support, but the metadata routes mutation operations (insert/update/delete or mutating procedures) to it. The resolver rejects this combination at build time.

Source

Thrown at v3/crates/metadata-resolve/src/helpers/ndc_validation.rs:133

    #[error(
        "Result type of function/procedure {function_or_procedure_name:} is {function_or_procedure_output_type:} but output type of command {command_name:} is {command_output_type:}"
    )]
    FuncProcAndCommandScalarOutputTypeMismatch {
        function_or_procedure_name: String,
        function_or_procedure_output_type: String,
        command_name: String,
        command_output_type: String,
    },
    #[error(
        "Custom result type of function {function_or_procedure_name:} does not match custom output type of command: {command_name:}"
    )]
    FuncProcAndCommandCustomOutputTypeMismatch {
        function_or_procedure_name: String,
        command_name: String,
    },
    #[error("data connector does not support queries")]
    QueryCapabilityUnsupported,
    #[error("data connector does not support mutations")]
    MutationCapabilityUnsupported,

    // for `DataConnectorLink.argumentPresets` not all type representations are supported.
    #[error(
        "Unsupported type representation {representation:} in scalar type {scalar_type:}, for argument preset name {argument_name:}. Only 'json' representation is supported."
    )]
    UnsupportedTypeInDataConnectorLinkArgumentPreset {
        representation: String,
        scalar_type: DataConnectorScalarType,
        argument_name: open_dds::types::DataConnectorArgumentName,
    },

    #[error(
        "Argument '{argument_name:}' used in argument mapping for the field '{field_name:}' in object type '{object_type_name:}' is not defined in the data connector '{data_connector_name:}'."
    )]
    NoSuchArgumentInNDCArgumentMapping {
        argument_name: open_dds::arguments::ArgumentName,
        field_name: FieldName,

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Remove mutation operations from models/commands on that connector
  2. Enable mutations in the connector's capabilities/config
  3. Move the mutating model to a connector that supports mutations
Defensive patterns

Strategy: fallback

Validate before calling

if requires_mutations && !caps.mutations.supported {
    return Err(friendly_config_error);
}

Prevention

When it happens

Trigger: Defining insert/update/delete on a model whose data connector capabilities lack 'mutations'; using a read-only analytics connector for a mutation command.

Common situations: Read-only connectors (e.g. BI/analytics backends) accidentally given mutation metadata; connector downgrade removing mutation support.

Related errors


AI-assisted analysis of hasura/graphql-engine@724551b9ae (2026-08-28). Data as JSON: /api/errors/290c342283f40047. Report an issue: GitHub.