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}` What it means
Same family as the materialized-view variant: when a streaming table's configuration changes but `on_configuration_change` is `continue`, dbt skips applying the change (no ALTER/rebuild) and warns instead. The existing streaming table keeps its old definition while the model file reflects a new one.
Solutions
- Set `on_configuration_change='apply'` in the streaming table's config so the ALTER runs.
- Use `dbt run --full-refresh` once to recreate the streaming table with the new configuration.
- Set `on_configuration_change='fail'` if you prefer the pipeline to stop and force an explicit decision.
- If skipping is intentional, dismiss the warning; it confirms the change was not applied.
Example fix
-- before
{{ config(materialized='streaming_table', on_configuration_change='continue') }}
-- after
{{ config(materialized='streaming_table', on_configuration_change='apply') }} Defensive patterns
Strategy: validation
Validate before calling
# Before deploying streaming table changes:
if config.on_configuration_change == 'continue' and config_changed:
raise ValueError('streaming_table config changed but on_configuration_change=continue; change will not be applied') Prevention
- Keep streaming table configs under version control and review 'continue' settings during config edits.
- Use --full-refresh intentionally when changing streaming table properties.
- Document why 'continue' is set per model so future edits are not silently skipped.
When it happens
Trigger: Running `dbt run` on a model with `materialized='streaming_table'` whose config differs from the deployed relation, with `on_configuration_change='continue'` configured.
Common situations: Editing a streaming table's target refresh interval or other Databricks streaming-table properties and expecting the change to land, while a 'continue' setting (often copied from a template) silently skips it.
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
- Configuration changes were identified and…
- Cannot apply incremental predicates with
- Constraint of type } with no `name` provided. Generating…
- Constraint of type with no `name` provided. Generating hash…
- Constraints not supported for file format
AI-assisted analysis of dbt-labs/dbt-core@0267ce9170 (2026-09-07).
Data as JSON: /api/errors/37c3661b99b5ad0d.
Report an issue: GitHub.
Appendix: source
Thrown at crates/dbt-loader/src/dbt_macro_assets/dbt-databricks/macros/materializations/streaming_table.sql:45
-- determine the scenario we're in: create, full_refresh, alter, refresh data
{% if existing_relation is none %}
{% set build_sql = get_create_streaming_table_as_sql(target_relation, sql) %}
{% elif full_refresh_mode or not existing_relation.is_streaming_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 = get_configuration_changes(existing_relation) %}
{% if configuration_changes is none %}
{{ log("REFRESHING STREAMING TABLE: " ~ target_relation) }}
{% set build_sql = refresh_streaming_table(target_relation, sql) %}
{% elif on_configuration_change == 'apply' %}
{% set build_sql = get_alter_streaming_table_as_sql(target_relation, configuration_changes, sql, existing_relation, None, None) %}
{% 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`, 'skip', 'fail'
{{ exceptions.raise_compiler_error("Unexpected configuration scenario") }}
{% endif %}
{% endif %}
{% do return(build_sql) %}
{% endmacro %}
{% macro streaming_table_execute_build_sql(build_sql, existing_relation, target_relation, post_hooks) %}
-- `BEGIN` happens here:View on GitHub (pinned to 0267ce9170)