{"record":{"id":"ec76c01e53ba053c","repo":"dbt-labs/dbt-core","slug":"configuration-changes-were-identified-and-on-conf","errorCode":null,"errorMessage":"Configuration changes were identified and `on_configuration_change` was set to `continue` for `{target_relation.render()}`","messagePattern":"Configuration changes were identified and `on_configuration_change` was set to `continue` for `(.+?)`","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"crates/dbt-loader/src/dbt_macro_assets/dbt-adapters/macros/materializations/models/materialized_view.sql","lineNumber":77,"sourceCode":"    -- determine the scenario we're in: create, full_refresh, alter, refresh data\n    {% if existing_relation is none %}\n        {% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}\n    {% elif full_refresh_mode or not existing_relation.is_materialized_view %}\n        {% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}\n    {% else %}\n\n        -- get config options\n        {% set on_configuration_change = config.get('on_configuration_change', 'apply') %} {# DIVERGENCE: core does not default to `apply` here because it sets it elsewhere in the Python code #}\n        {% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}\n\n        {% if configuration_changes is none %}\n            {% set build_sql = refresh_materialized_view(target_relation) %}\n\n        {% elif on_configuration_change == 'apply' %}\n            {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}\n        {% elif on_configuration_change == 'continue' %}\n            {% set build_sql = '' %}\n            {{ exceptions.warn(\"Configuration changes were identified and `on_configuration_change` was set to `continue` for `\" ~ target_relation.render() ~ \"`\") }}\n        {% elif on_configuration_change == 'fail' %}\n            {{ exceptions.raise_fail_fast_error(\"Configuration changes were identified and `on_configuration_change` was set to `fail` for `\" ~ target_relation.render() ~ \"`\") }}\n\n        {% else %}\n            -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'\n            {{ exceptions.raise_compiler_error(\"Unexpected configuration scenario\") }}\n\n        {% endif %}\n\n    {% endif %}\n\n    {% do return(build_sql) %}\n\n{% endmacro %}\n\n\n-- funcsign: (relation) -> string\n{% macro materialized_view_execute_no_op(target_relation) %}","sourceCodeStart":59,"sourceCodeEnd":95,"githubUrl":"https://github.com/dbt-labs/dbt-core/blob/0267ce9170576975b76b64ce856b2e5848e96617/crates/dbt-loader/src/dbt_macro_assets/dbt-adapters/macros/materializations/models/materialized_view.sql#L59-L95","documentation":"During the materialized view materialization, when a relation's configuration has changed but `on_configuration_change` is set to 'continue', dbt skips applying those changes and issues this warning naming the affected relation. The existing relation is left as-is (build_sql is set to ''), so the materialization makes no configuration updates.","triggerScenarios":"Running a materialized view model where the model config differs from the existing relation's config AND `on_configuration_change: continue` is set; the macro enters the `continue` branch, sets build_sql to the empty string, and warns.","commonSituations":"Deliberately choosing 'continue' in CI/production to avoid expensive rebuilds while noting drift; forgetting to switch back to 'apply' after debugging; inherited configs where the default was left as 'continue'.","solutions":["Set `on_configuration_change: apply` in the model config so dbt applies the pending configuration changes via ALTER.","Or set it to `fail` if you want the run to error loudly whenever configuration drift is detected.","If 'continue' is intentional, acknowledge the warning — the relation will not pick up the config changes until a full rebuild."],"exampleFix":"// before\nconfig:\n  materialized: materialized_view\n  on_configuration_change: continue\n// after\nconfig:\n  materialized: materialized_view\n  on_configuration_change: apply","handlingStrategy":"validation","validationCode":"# Before deploying, diff the model config against the deployed relation\n# dbt: run `dbt compile` and compare to\n# `dbt run-operation get_materialized_view_config --args 'relation_name: ...'`\n# Choose on_configuration_change deliberately: apply|skip|fail|continue","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Set on_configuration_change explicitly (prefer 'apply' or 'fail') rather than relying on defaults.","In CI, use 'fail' so config drift surfaces loudly instead of silently continuing.","Schedule full rebuilds when intentional config changes should land on materialized views."],"tags":["dbt","materialized-view","config","warning"],"backgroundTag":"invalid-config-value","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"}