dbt-labs/dbt-core · warning

Configuration changes were identified and `on_configuration_

Error message

Configuration changes were identified and `on_configuration_change` was set to `continue` for `{{ target_relation }}`

What it means

This is a compiler-time warning emitted by the Snowflake dynamic table materialization in dbt. When a dynamic table's rendered configuration differs from the existing relation, dbt compares them; if `on_configuration_change` is set to `continue`, dbt skips rebuilding/altering the table (build_sql is left empty) and warns instead of applying or failing. It indicates your model config changed but the change was deliberately not applied.

Source

Thrown at crates/dbt-loader/src/dbt_macro_assets/dbt-snowflake/macros/materializations/dynamic_table.sql:57

    {% if existing_relation is none %}
        {% set build_sql = get_create_sql(target_relation, sql) %}
    {% elif full_refresh_mode or not existing_relation.is_dynamic_table %}
        {% 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 = snowflake__get_dynamic_table_configuration_changes(existing_relation, config) %}

        {% if configuration_changes is none %}
            {% set build_sql = '' %}
            {{ exceptions.warn("No configuration changes were identified on: `" ~ target_relation ~ "`. Continuing.") }}

        {% elif on_configuration_change == 'apply' %}
            {% set build_sql = snowflake__get_alter_dynamic_table_as_sql(existing_relation, configuration_changes, target_relation, sql) %}
        {% 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 ~ "`") }}
        {% 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 ~ "`") }}

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

        {% endif %}

    {% endif %}

    {% do return(build_sql) %}

{% endmacro %}


{% macro dynamic_table_execute_no_op(relation) %}
    {% do store_raw_result(

View on GitHub (pinned to 0267ce9170)

Solutions

  1. Set `on_configuration_change='apply'` in the model config to let dbt run ALTER statements for the detected changes
  2. Set `on_configuration_change='fail'` if you want the run to stop loudly instead of silently continuing
  3. Manually apply the config change (ALTER DYNAMIC TABLE ... or full refresh with `dbt run --full-refresh`)
  4. If no config actually changed, inspect `configuration_changes` detection (snowflake__get_dynamic_table_configuration_changes) for false positives from state parsing

Example fix

// before
{{ config(materialized='dynamic_table', on_configuration_change='continue', target_lag='1 hour') }}
// after
{{ config(materialized='dynamic_table', on_configuration_change='apply', target_lag='1 hour') }}
Defensive patterns

Strategy: validation

Validate before calling

// before running, check the model's config in schema.yml or the model file
// if the model config drifted and on_configuration_change is 'continue', expect a skip
const cfg = model.config;
if (cfg.on_configuration_change === 'continue') {
  console.warn(`Config changes on ${cfg.materialized} model will NOT be applied; set 'apply' or 'fail'.`);
}

Prevention

When it happens

Trigger: Running `dbt run` on a Snowflake model materialized as dynamic_table whose config (e.g. target_lag, warehouse) changed since the last build, with `on_configuration_change='continue'` in the model config.

Common situations: Teams set `on_configuration_change='continue'` to avoid full rebuilds in CI, then forget that config edits are silently skipped; staging vs prod differences in config cause repeated warnings.

Understand the failure class

Background: "is deprecated and will be removed" — deprecation warnings for old API names, keywords, and options, and how to migrate before the removal release — this error's family across 29 libraries.

Related errors


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