{"record":{"id":"a1bac7cdbf5f0d0a","repo":"dbt-labs/dbt-core","slug":"contract-error-message","errorCode":null,"errorMessage":"Contract Error: {message}","messagePattern":"Contract Error: (.+?)","errorType":"exception","errorClass":"minijinja::Error (InvalidOperation)","httpStatus":null,"severity":"error","filePath":"crates/dbt-jinja-utils/src/functions/base.rs","lineNumber":1268,"sourceCode":"                        Err(_) => \"\".to_string(),\n                    }\n                };\n\n                let message = format!(\n                    \"Contracted models require data_type to be defined for each column.  Please ensure that the column name and data_type are defined within the YAML configuration for the {column_names_string} column(s).\"\n                );\n                if let Some((node_id, file_path)) = node_metadata_from_state(state) {\n                    Err(Error::new(\n                        ErrorKind::InvalidOperation,\n                        format!(\n                            \"Contract 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!(\"Contract Error: {message}\"),\n                    ))\n                }\n            }\n            // (msg, node=None)\n            \"raise_fail_fast_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                            \"FailFast Error for {} from {}: {}\",\n                            node_id,\n                            file_path.display(),\n                            message\n                        ),","sourceCodeStart":1250,"sourceCodeEnd":1286,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-jinja-utils/src/functions/base.rs#L1250-L1286","documentation":"Fallback variant of the missing-contract-data_type error: the same 'Contracted models require data_type to be defined for each column' failure raised without node id/file path because `node_metadata_from_state(state)` returned None. The compilation still fails for the affected node.","triggerScenarios":"Missing data_type in a contracted model's YAML columns detected during Jinja evaluation when no node metadata is in state (parse/compile outside a model context, or dispatched macro without node info).","commonSituations":"Same as the located variant: contracted YAML missing `data_type`, evaluated outside a normal run path so the file location cannot be attached.","solutions":["Add `data_type:` to all columns in the YAML contract block.","Run via `dbt build`/`run` to get the located error variant pointing at the file.","Ensure contract-validation macros run within a node context."],"exampleFix":"# before\n# Contract Error: Contracted models require data_type to be defined for each column...\n\n# after (models/my_model.yml)\ncolumns:\n  - name: id\n    data_type: bigint","handlingStrategy":"validation","validationCode":"import yaml\ncfg = yaml.safe_load(open('models/my_model.yml'))\nassert all('data_type' in c for c in cfg['models'][0]['columns']), 'missing data_type in contract'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate the YAML contract with a schema linter in CI.","Run dbt build (not parse) for contracted models to get located errors.","Backfill data_type for all columns when first enabling contracts."],"tags":["dbt","jinja","contract","yaml","schema-validation"],"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-14T16:17:12.679Z"}