{"record":{"id":"50d95c7522807975","repo":"dbt-labs/dbt-core","slug":"compilation-error-message","errorCode":null,"errorMessage":"Compilation Error: {message}","messagePattern":"Compilation Error: (.+?)","errorType":"exception","errorClass":"InvalidOperation","httpStatus":null,"severity":"error","filePath":"crates/dbt-jinja-utils/src/functions/base.rs","lineNumber":1145,"sourceCode":"\n                Ok(Value::UNDEFINED)\n            }\n            // (msg, node=None)\n            \"raise_compiler_error\" => {\n                let mut args = ArgParser::new(args, None);\n                let message = args.get::<String>(\"msg\")?;\n                if let Some((node_id, file_path)) = node_metadata_from_state(state) {\n                    Err(Error::new(\n                        ErrorKind::InvalidOperation,\n                        format!(\n                            \"Compilation Error for {} from {}: {}\",\n                            node_id,\n                            file_path.display(),\n                            message\n                        ),\n                    ))\n                } else {\n                    Err(Error::new(\n                        ErrorKind::InvalidOperation,\n                        format!(\"Compilation Error: {message}\"),\n                    ))\n                }\n            }\n            // (msg) String\n            \"raise_not_implemented\" => {\n                let mut args = ArgParser::new(args, None);\n                let message = args.get::<String>(\"msg\")?;\n                Err(Error::new(\n                    ErrorKind::InvalidOperation,\n                    format!(\"Not implemented: {message}\"),\n                ))\n            }\n            // (relation, expected_type, model=None)\n            //   Relation,  String\n            \"relation_wrong_type\" => {\n                let mut args = ArgParser::new(args, None);","sourceCodeStart":1127,"sourceCodeEnd":1163,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-jinja-utils/src/functions/base.rs#L1127-L1163","documentation":"Same as the node-aware compilation error, but raised when `node_metadata_from_state` returns None — the rendering context has no node id/file path. The library then emits a plain `Compilation Error: {message}` so the user message still surfaces even without node context (e.g. rendering snippets outside a node).","triggerScenarios":"A template calls `raise_compiler_error(msg)` while being rendered without node metadata in the Jinja state (ad-hoc rendering, macro evaluation outside a model context).","commonSituations":"Running `dbt compile`/render of standalone macros or docs blocks where no model node is attached, yet a template-level validation failed.","solutions":["Fix the condition described in `{message}` in the offending template/macro","Render within a normal node context if node-level diagnostics are needed","Replace the hard raise with `exceptions.warn` while debugging"],"exampleFix":"// before\n{{ exceptions.raise_compiler_error(\"bad input\") }}\n// after\n{% if bad_input %}{{ log(\"bad input: \" ~ input, info=True) }}{% endif %}  // soften while diagnosing","handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Same message shape without node info:\nif let Some(msg) = err.to_string().strip_prefix(\"Compilation Error: \") {\n    handle_compiler_error(msg);\n}","preventionTips":["Render templates within a node context when you need node diagnostics","Prefer warn() during interactive debugging","Keep template-level validations explicit about which input failed"],"tags":["jinja","compiler-error","dbt"],"backgroundTag":"schema-validation-failed","analyzedSha":"0267ce9170576975b76b64ce856b2e5848e96617","analyzedAt":"2026-09-07T21:53:39.732Z","contentChangedAt":"2026-09-07T21:53:39.732Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}