{"record":{"id":"6d61ac7afe3541e6","repo":"dbt-labs/dbt-core","slug":"required-var-not-found-in-config-vars-suppli","errorCode":null,"errorMessage":"Required var '{}' not found in config:\nVars supplied to {} = {}","messagePattern":"Required var '(.+?)' not found in config:\nVars supplied to (.+?) = (.+?)","errorType":"exception","errorClass":"minijinja::Error (InvalidOperation)","httpStatus":null,"severity":"error","filePath":"crates/dbt-jinja-vars/src/var.rs","lineNumber":101,"sourceCode":"\n            if let Some(v) = keyword_default_value {\n                // Keyword default: var(\"x\", default=...)\n                default_value = Some(v);\n            } else {\n                // Positional default: var(\"x\", \"abc\")\n                default_value = Some(second.clone());\n            }\n        }\n\n        Ok((var_name, default_value))\n    }\n\n    /// Consistent missing-var error shape.\n    fn missing_var_error<M>(package_name: &str, var_name: &str, vars_lookup: &M) -> Error\n    where\n        M: Serialize + ?Sized,\n    {\n        Error::new(\n            ErrorKind::InvalidOperation,\n            format!(\n                \"Required var '{}' not found in config:\\nVars supplied to {} = {}\",\n                var_name,\n                package_name,\n                serde_json::to_string_pretty(vars_lookup).unwrap()\n            ),\n        )\n    }\n\n    /// Common handler for `has_var`.\n    fn call_has_var(&self, state: &State<'_, '_>, args: &[Value]) -> Result<Value, Error> {\n        if args.is_empty() {\n            return Err(Error::new(\n                ErrorKind::InvalidOperation,\n                \"has_var requires 1 argument\",\n            ));\n        }","sourceCodeStart":83,"sourceCodeEnd":119,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-jinja-vars/src/var.rs#L83-L119","documentation":"Raised by `missing_var_error` when `var()` is asked for a variable that is absent from the vars configuration and no default was provided. The error embeds the requested var name, the package it was looked up in, and a pretty-printed JSON dump of all vars actually supplied, to make the mismatch obvious.","triggerScenarios":"`{{ var('my_var') }}` where `my_var` is not in the supplied vars dict for the package and no `default=` kwarg was passed. The lookup map (`vars_lookup`) is serialized into the message via serde_json.","commonSituations":"`dbt run` without `--vars '{\"my_var\": ...}'` or `vars:` in dbt_project.yml; a typo between the Jinja call and the var definition; a var defined in one package but referenced from another package's context; renaming a var without updating all references.","solutions":["Supply the var: `dbt run --vars '{\"my_var\": \"value\"}'` or add it under `vars:` in dbt_project.yml.","Add an inline default: `{{ var('my_var', 'fallback') }}`.","Compare your supplied vars against the JSON dump in the error message to spot spelling/package mismatches.","Check the var is defined for the correct package namespace (package-scoped vs global vars)."],"exampleFix":"// before (Jinja)\n{{ var('start_date') }}\n// after\n{{ var('start_date', '1970-01-01') }}  <!-- or add vars: start_date: ... to dbt_project.yml -->","handlingStrategy":"fallback","validationCode":"{% if not has_var('my_var') %}{{ exceptions.raise_compiler_error('my_var is required; supply via --vars') }}{% endif %}","typeGuard":null,"tryCatchPattern":"{{ var('my_var', 'default_value') }}  // graceful fallback instead of hard error","preventionTips":["Define all required vars in dbt_project.yml vars: or pass --vars on every invocation","Use has_var() to branch before var()","Keep var names in one place (a macro) to avoid typos and package mismatches"],"tags":["jinja","var","missing-variable","dbt"],"backgroundTag":"missing-required-config","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-14T16:17:12.679Z"}