atul-astronomer opened a new issue, #63434:
URL: https://github.com/apache/airflow/issues/63434
### Apache Airflow version
main (development)
### If "Other Airflow 3 version" selected, which one?
_No response_
### What happened?
Performing downgrade from 3.2.0b1 to 3.1.8 with SQlite is broken
```javascript
Welcome to your tmux based running Airflow environment (courtesy of Breeze).
To stop Airflow and exit tmux, just type 'stop_airflow'.
If you want to build webserver assets dynamically, run start-airflow
command with --dev-mode
[Breeze:3.10.20] root@3bb4a8f93556:/opt/airflow$ airflow db downgrade -n
3.1.8
2026-03-12T11:07:40.013390Z [info ] setup plugin
alembic.autogenerate.schemas [alembic.runtime.plugins] loc=plugins.py:37
2026-03-12T11:07:40.013532Z [info ] setup plugin
alembic.autogenerate.tables [alembic.runtime.plugins] loc=plugins.py:37
2026-03-12T11:07:40.013595Z [info ] setup plugin
alembic.autogenerate.types [alembic.runtime.plugins] loc=plugins.py:37
2026-03-12T11:07:40.013645Z [info ] setup plugin
alembic.autogenerate.constraints [alembic.runtime.plugins] loc=plugins.py:37
2026-03-12T11:07:40.013707Z [info ] setup plugin
alembic.autogenerate.defaults [alembic.runtime.plugins] loc=plugins.py:37
2026-03-12T11:07:40.013756Z [info ] setup plugin
alembic.autogenerate.comments [alembic.runtime.plugins] loc=plugins.py:37
Performing downgrade with database sqlite:////root/airflow/sqlite/airflow.db
Warning: About to reverse schema migrations for the airflow metastore.
Please ensure you have backed up your database before any upgrade or downgrade
operation. Proceed? (y/n)
y
2026-03-12T11:07:42.745671Z [info ] Attempting downgrade to revision
509b94a1042d [airflow.utils.db] loc=db.py:1343
/opt/airflow/airflow-core/src/airflow/migrations/versions/0094_3_2_0_replace_deadline_inline_callback_with_fkey.py:37
DeprecatedImportWarning: The `airflow.serialization.serde.deserialize`
attribute is deprecated. Please use `'airflow.sdk.serde.deserialize'`.
2026-03-12T11:07:42.845887Z [info ] Applying downgrade migrations to
Airflow database. [airflow.utils.db] loc=db.py:1370
2026-03-12T11:07:42.847463Z [info ] Context impl SQLiteImpl.
[alembic.runtime.migration] loc=migration.py:210
2026-03-12T11:07:42.847573Z [info ] Will assume non-transactional DDL.
[alembic.runtime.migration] loc=migration.py:213
/opt/airflow/airflow-core/src/airflow/migrations/versions/0094_3_2_0_replace_deadline_inline_callback_with_fkey.py:37
DeprecatedImportWarning: The `airflow.serialization.serde.deserialize`
attribute is deprecated. Please use `'airflow.sdk.serde.deserialize'`.
2026-03-12T11:07:42.907748Z [info ] Running downgrade 6222ce48e289 ->
134de42d3cb0, Add partition fields to DagModel. [alembic.runtime.migration]
loc=migration.py:621
Traceback (most recent call last):
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1967, in _exec_single_context
self.dialect.do_execute(
File
"/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
952, in do_execute
cursor.execute(statement, parameters)
sqlite3.IntegrityError: FOREIGN KEY constraint failed
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/python/bin/airflow", line 10, in <module>
sys.exit(main())
File "/opt/airflow/airflow-core/src/airflow/__main__.py", line 55, in main
args.func(args)
File "/opt/airflow/airflow-core/src/airflow/cli/cli_config.py", line 49,
in command
return func(*args, **kwargs)
File "/opt/airflow/airflow-core/src/airflow/utils/cli.py", line 113, in
wrapper
return f(*args, **kwargs)
File
"/opt/airflow/airflow-core/src/airflow/utils/providers_configuration_loader.py",
line 54, in wrapped_function
return func(*args, **kwargs)
File "/opt/airflow/airflow-core/src/airflow/cli/commands/db_command.py",
line 213, in downgrade
run_db_downgrade_command(args, db.downgrade, _REVISION_HEADS_MAP)
File "/opt/airflow/airflow-core/src/airflow/cli/commands/db_command.py",
line 188, in run_db_downgrade_command
command(to_revision=to_revision, from_revision=from_revision,
show_sql_only=args.show_sql_only)
File "/opt/airflow/airflow-core/src/airflow/utils/session.py", line 100,
in wrapper
return func(*args, session=session, **kwargs) # type: ignore[arg-type]
File "/opt/airflow/airflow-core/src/airflow/utils/db.py", line 1371, in
downgrade
command.downgrade(config, revision=to_revision, sql=show_sql_only)
File "/usr/python/lib/python3.10/site-packages/alembic/command.py", line
530, in downgrade
script.run_env()
File "/usr/python/lib/python3.10/site-packages/alembic/script/base.py",
line 545, in run_env
util.load_python_file(self.dir, "env.py")
File "/usr/python/lib/python3.10/site-packages/alembic/util/pyfiles.py",
line 116, in load_python_file
module = load_module_py(module_id, path)
File "/usr/python/lib/python3.10/site-packages/alembic/util/pyfiles.py",
line 136, in load_module_py
spec.loader.exec_module(module) # type: ignore
File "<frozen importlib._bootstrap_external>", line 883, in exec_module
File "<frozen importlib._bootstrap>", line 241, in
_call_with_frames_removed
File "/opt/airflow/airflow-core/src/airflow/migrations/env.py", line 138,
in <module>
run_migrations_online()
File "/opt/airflow/airflow-core/src/airflow/migrations/env.py", line 132,
in run_migrations_online
context.run_migrations()
File "<string>", line 8, in run_migrations
File
"/usr/python/lib/python3.10/site-packages/alembic/runtime/environment.py", line
969, in run_migrations
self.get_context().run_migrations(**kw)
File
"/usr/python/lib/python3.10/site-packages/alembic/runtime/migration.py", line
626, in run_migrations
step.migration_fn(**kw)
File
"/opt/airflow/airflow-core/src/airflow/migrations/versions/0107_3_2_0_add_partition_fields_to_dag.py",
line 56, in downgrade
with op.batch_alter_table("dag", schema=None) as batch_op:
File "/usr/python/lib/python3.10/contextlib.py", line 142, in __exit__
next(self.gen)
File
"/usr/python/lib/python3.10/site-packages/alembic/operations/base.py", line
408, in batch_alter_table
impl.flush()
File
"/usr/python/lib/python3.10/site-packages/alembic/operations/batch.py", line
163, in flush
batch_impl._create(self.impl)
File
"/usr/python/lib/python3.10/site-packages/alembic/operations/batch.py", line
468, in _create
op_impl.drop_table(self.table)
File "/usr/python/lib/python3.10/site-packages/alembic/ddl/impl.py", line
465, in drop_table
self._exec(schema.DropTable(table, **kw))
File "/usr/python/lib/python3.10/site-packages/alembic/ddl/impl.py", line
256, in _exec
return conn.execute(construct, params)
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1419, in execute
return meth(
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/sql/ddl.py",
line 187, in _execute_on_connection
return connection._execute_ddl(
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1530, in _execute_ddl
ret = self._execute_context(
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1846, in _execute_context
return self._exec_single_context(
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1986, in _exec_single_context
self._handle_dbapi_exception(
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 2363, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/base.py",
line 1967, in _exec_single_context
self.dialect.do_execute(
File
"/usr/python/lib/python3.10/site-packages/sqlalchemy/engine/default.py", line
952, in do_execute
cursor.execute(statement, parameters)
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) FOREIGN KEY
constraint failed
[SQL:
DROP TABLE dag]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
[Breeze:3.10.20] root@3bb4a8f93556:/opt/airflow$
```
### What you think should happen instead?
_No response_
### How to reproduce
Steps to repro:
1. Run airflow instance with command `breeze start-airflow --executor
CeleryExecutor --backend SQlite --load-example-dags`
2. Make some dagruns, upgrade to 3.2.0b1
3. Downgrade back to 3.1.8 with command `airflow db downgrade`
4. Notice error
### Operating System
Linux
### Versions of Apache Airflow Providers
_No response_
### Deployment
Other
### Deployment details
_No response_
### Anything else?
_No response_
### Are you willing to submit PR?
- [ ] Yes I am willing to submit a PR!
### Code of Conduct
- [x] I agree to follow this project's [Code of
Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]