hasura/graphql-engine · error · ModelGraphqlError

duplicate field {field_name:} in unique identifier defined f

Error message

duplicate field {field_name:} in unique identifier defined for model {model_name:}

What it means

The same field appears more than once in a model's unique identifier list, which is invalid because the identifier must be a set of distinct fields.

Source

Thrown at v3/crates/metadata-resolve/src/stages/models_graphql/error.rs:16

use open_dds::{models::ModelName, types::FieldName};

use crate::{
    Qualified,
    stages::{boolean_expressions, graphql_config, models},
    types::error::ContextualError,
};

#[derive(Debug, thiserror::Error)]
pub enum ModelGraphqlError {
    #[error("unknown field {field_name:} in unique identifier defined for model {model_name:}")]
    UnknownFieldInUniqueIdentifier {
        model_name: Qualified<ModelName>,
        field_name: FieldName,
    },
    #[error("duplicate field {field_name:} in unique identifier defined for model {model_name:}")]
    DuplicateFieldInUniqueIdentifier {
        model_name: Qualified<ModelName>,
        field_name: FieldName,
    },
    #[error(
        "filter input type name graphql configuration must be specified for model {model_name:} because aggregates are used with it"
    )]
    MissingFilterInputTypeNameGraphqlConfiguration { model_name: Qualified<ModelName> },

    #[error("{0}")]
    GraphqlConfigError(#[from] graphql_config::GraphqlConfigError),
    #[error("{0}")]
    ModelsError(#[from] models::ModelsError),
    #[error("{0}")]
    BooleanExpressionError(#[from] boolean_expressions::BooleanExpressionError),
}

impl ContextualError for ModelGraphqlError {

View on GitHub (pinned to 724551b9ae)

Solutions

  1. Remove the duplicate entry so each field appears once

Example fix

# before
unique_identifier: [id, email, id]
# after
unique_identifier: [id, email]
Defensive patterns

Strategy: validation

Validate before calling

let ids = &model.unique_identifier;
assert!(ids.iter().collect::<HashSet<_>>().len() == ids.len(), "duplicate field in unique identifier");

Prevention

When it happens

Trigger: Listing a field twice in unique_identifier, e.g. [id, id] or duplicated entries from YAML merges.

Common situations: YAML anchors or generated metadata producing duplicate entries; manual copy-paste mistakes.

Related errors


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