dbt-labs/dbt-core · warning

Configuration changes were identified and…

Error message

Configuration changes were identified and `on_configuration_change` was set to `continue` for `{target_relation.render()}`

What it means

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.

Solutions

  1. Set `on_configuration_change: apply` in the model config so dbt applies the pending configuration changes via ALTER.
  2. Or set it to `fail` if you want the run to error loudly whenever configuration drift is detected.
  3. If 'continue' is intentional, acknowledge the warning — the relation will not pick up the config changes until a full rebuild.

Example fix

// before
config:
  materialized: materialized_view
  on_configuration_change: continue
// after
config:
  materialized: materialized_view
  on_configuration_change: apply
Defensive patterns

Strategy: validation

Validate before calling

# Before deploying, diff the model config against the deployed relation
# dbt: run `dbt compile` and compare to
# `dbt run-operation get_materialized_view_config --args 'relation_name: ...'`
# Choose on_configuration_change deliberately: apply|skip|fail|continue

Prevention

When it happens

Trigger: 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.

Common situations: 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'.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07). Data as JSON: /api/errors/ec76c01e53ba053c. Report an issue: GitHub.

Appendix: source

Thrown at crates/dbt-loader/src/dbt_macro_assets/dbt-adapters/macros/materializations/models/materialized_view.sql:77

    -- determine the scenario we're in: create, full_refresh, alter, refresh data
    {% if existing_relation is none %}
        {% set build_sql = get_create_materialized_view_as_sql(target_relation, sql) %}
    {% elif full_refresh_mode or not existing_relation.is_materialized_view %}
        {% set build_sql = get_replace_sql(existing_relation, target_relation, sql) %}
    {% else %}

        -- get config options
        {% 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 #}
        {% set configuration_changes = get_materialized_view_configuration_changes(existing_relation, config) %}

        {% if configuration_changes is none %}
            {% set build_sql = refresh_materialized_view(target_relation) %}

        {% elif on_configuration_change == 'apply' %}
            {% set build_sql = get_alter_materialized_view_as_sql(target_relation, configuration_changes, sql, existing_relation, backup_relation, intermediate_relation) %}
        {% elif on_configuration_change == 'continue' %}
            {% set build_sql = '' %}
            {{ exceptions.warn("Configuration changes were identified and `on_configuration_change` was set to `continue` for `" ~ target_relation.render() ~ "`") }}
        {% elif on_configuration_change == 'fail' %}
            {{ exceptions.raise_fail_fast_error("Configuration changes were identified and `on_configuration_change` was set to `fail` for `" ~ target_relation.render() ~ "`") }}

        {% else %}
            -- this only happens if the user provides a value other than `apply`, 'skip', 'fail'
            {{ exceptions.raise_compiler_error("Unexpected configuration scenario") }}

        {% endif %}

    {% endif %}

    {% do return(build_sql) %}

{% endmacro %}


-- funcsign: (relation) -> string
{% macro materialized_view_execute_no_op(target_relation) %}

View on GitHub (pinned to 0267ce9170)