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 warning is emitted by the Snowflake interactive table materialization when the model's configuration differs from the existing relation but `on_configuration_change` is set to `continue`. dbt leaves build_sql empty and warns, meaning the config drift is acknowledged but intentionally not applied. The table keeps its current configuration.

Source

Thrown at crates/dbt-loader/src/dbt_macro_assets/dbt-snowflake/macros/materializations/interactive_table.sql:51

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


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

View on GitHub (pinned to 0267ce9170)

Solutions

  1. Change `on_configuration_change` to `apply` so dbt issues `snowflake__get_alter_interactive_table_as_sql` ALTER statements
  2. Change it to `fail` to make config drift break the run instead of being skipped
  3. Apply the change manually with an ALTER INTERACTIVE TABLE statement, or rebuild with `--full-refresh`
  4. Confirm the intended config change is in the right model/ENV (staging vs prod discrepancy)

Example fix

// before
{{ config(materialized='interactive_table', on_configuration_change='continue') }}
// after
{{ config(materialized='interactive_table', on_configuration_change='apply') }}
Defensive patterns

Strategy: validation

Validate before calling

const cfg = model.config;
if (cfg.materialized === 'interactive_table' && cfg.on_configuration_change === 'continue') {
  console.warn('Config drift will be acknowledged but NOT applied to the interactive table.');
}

Prevention

When it happens

Trigger: Running `dbt run` on a Snowflake interactive_table model whose rendered config changed (e.g. cluster_by, target_lag) with `on_configuration_change='continue'` configured.

Common situations: CI pipelines configured with `continue` to avoid costly ALTERs silently skip config updates; developers confused why config changes never take effect on the table.

Understand the failure class

Background: "Invalid state transition" errors: "status must be X, actually Y", "already rejected/charging/uninstalled", "cannot ... while running" — what they mean when a library rejects your call — this error's family across 31 libraries.

Related errors


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