hasura/graphql-engine · error · DataConnectorError::IncompatibleNdcVersion

The version specified in the capabilities ("{version}") is n

Error message

The version specified in the capabilities ("{version}") is not compatible with the schema version specified. The version requirement is {requirement}

What it means

The capabilities' SemVer version is parseable but does not satisfy the version requirement this build expects for the NDC schema, making the connector incompatible.

Source

Thrown at v3/crates/metadata-resolve/src/stages/data_connectors/error.rs:39

pub enum DataConnectorError {
    #[error("the data connector is defined more than once")]
    DuplicateDataConnectorDefinition,
    #[error("The url for the data connector is invalid: {error}")]
    InvalidDataConnectorUrl { error: url::ParseError },
    #[error("Invalid header name {header_name} specified")]
    InvalidHeaderName { header_name: String },
    #[error("Invalid value specified for header {header_name}")]
    InvalidHeaderValue { header_name: String },
    #[error("{0}")]
    NdcValidationError(NDCValidationError),
    #[error(
        "The version specified in the capabilities (\"{version}\") is an invalid version: {error}"
    )]
    InvalidNdcVersion {
        version: String,
        error: semver::Error,
    },
    #[error(
        "The version specified in the capabilities (\"{version}\") is not compatible with the schema version specified. The version requirement is {requirement}"
    )]
    IncompatibleNdcVersion {
        version: String,
        requirement: semver::VersionReq,
    },
}

#[derive(Debug, thiserror::Error)]
#[error("The data connector {data_connector_name} has an issue: {issue}")]
pub struct NamedDataConnectorIssue {
    pub data_connector_name: Qualified<DataConnectorName>,
    pub issue: DataConnectorIssue,
}

impl ShouldBeAnError for NamedDataConnectorIssue {
    fn should_be_an_error(&self, flags: &flags::OpenDdFlags) -> bool {
        self.issue.should_be_an_error(flags)

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Check the reported version vs the stated requirement
  2. Upgrade (or pin) the data connector to a compatible version
  3. Alternatively use a platform version matching the connector
Defensive patterns

Strategy: validation

Validate before calling

let req: semver::VersionReq = REQUIRED.parse()?;
assert!(req.matches(&semver::Version::parse(&capabilities.version)?));

Try / catch

Catch IncompatibleNdcVersion and suggest connector upgrade/downgrade paths based on the requirement string.

Prevention

When it happens

Trigger: Connector reports a version outside the supported range, e.g. an old 0.x connector with a build requiring ^1.x.

Common situations: Upgrading the platform without upgrading connectors, or vice versa; version skew between CLI/engine and connector.

Related errors


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