dbt-labs/dbt-core · error

Invalid adapter_type in manifest

Error message

Invalid adapter_type in manifest {}

What it means

nodes_from_dbt_manifest hard-panics because manifest.metadata.adapter_type does not parse into any known AdapterType — the manifest was produced by an adapter unknown to this build, or the field is empty/garbled. The abort happens while constructing the Nodes structure from a parsed dbt manifest file.

Solutions

  1. Inspect metadata.adapter_type in manifest.json and correct it to a supported adapter name
  2. Regenerate the manifest with the matching adapter so metadata is populated correctly
  3. Replace the panic with a returned error so callers can report the problem instead of aborting the process
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at crates/dbt-schemas/src/schemas/manifest/manifest.rs:1179 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07). Data as JSON: /api/errors/09b6bb0bacee7cf5. Report an issue: GitHub.

Appendix: source

Thrown at crates/dbt-schemas/src/schemas/manifest/manifest.rs:1179

    // Match dbt-core's `_sort_values`: deterministic, sorted, dedup'd values.
    for v in parent_map.values_mut() {
        v.sort();
        v.dedup();
    }
    for v in child_map.values_mut() {
        v.sort();
        v.dedup();
    }

    (parent_map, child_map)
}

pub fn nodes_from_dbt_manifest(manifest: DbtManifest, dbt_quoting: DbtQuoting) -> Nodes {
    let mut nodes = Nodes::default();

    let adapter_type =
        AdapterType::from_str(&manifest.metadata.adapter_type).unwrap_or_else(|_| {
            panic!(
                "Invalid adapter_type in manifest {}",
                &manifest.metadata.adapter_type
            )
        });

    let source_default_quoting = default_dbt_quoting_for(adapter_type);

    // A previous manifest carries its own `adapter_type` (just parsed above), which is the
    // spelling authority for the alias-authored keys in that file -- so canonicalize
    // `unrendered_config` the same way the parser does on the write side, or a manifest written
    // by pre-fix Fusion (authored spelling) looks like a `state:modified` false positive against
    // freshly parsed (canonical) config. Suppress-only and idempotent (see the callee's doc
    // comment); on a duplicate the canonical spelling wins rather than erroring, since this is
    // data we did not write this run.
    let canonicalize_unrendered_config = |cfg: BTreeMap<String, YmlValue>| {
        dbt_adapter_core::config_aliases::canonicalize_previous_manifest_config_keys(
            adapter_type,
            cfg,

View on GitHub (pinned to 0267ce9170)