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
- Set `on_configuration_change='apply'` in the model config to let dbt run ALTER statements for the detected changes
- Set `on_configuration_change='fail'` if you want the run to stop loudly instead of silently continuing
- Manually apply the config change (ALTER DYNAMIC TABLE ... or full refresh with `dbt run --full-refresh`)
- 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
- Default new dynamic table models to on_configuration_change='apply'
- Use on_configuration_change='fail' in CI so config drift is never silently skipped
- Grep the project for on_configuration_change='continue' during config-change reviews
- Follow up 'continue' warnings with a --full-refresh run to reconcile state
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
- Configuration changes were identified and `on_configuration_
- No configuration changes were identified on: `{{ target_rela
- dbt is currently configured to list a maximum of {{ max_resu
- {type(df)} is not a supported type for dbt Python materializ
- {type(df)} is not a supported type for dbt Python materializ
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/9266c467336cbd07.
Report an issue: GitHub.