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
- Inspect metadata.adapter_type in manifest.json and correct it to a supported adapter name
- Regenerate the manifest with the matching adapter so metadata is populated correctly
- 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)