Skip to content

airflow db downgrade fails on migration 0096 when team table has data #63444

@vatsrahul1001

Description

@vatsrahul1001

Apache Airflow version

3.1.0b2

If "Other Airflow 3 version" selected, which one?

No response

What happened?

The downgrade() in 0096_3_2_0_remove_team_id.py failing.

What you think should happen instead?

No response

How to reproduce

  1. breeze start-airflow --executor CeleryExecutor --backend postgres --load-example-dags --use-airflow-version 3.1.8
  2. Upgrade to 3.2.0: breeze start-airflow --executor CeleryExecutor --backend postgres --load-example-dags
  3. Insert data in team table
  4. airflow db downgrade -n 3.1.8 in tmux shell

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/0096_3_2_0_remove_team_id.py", line 107, in downgrade
    with op.batch_alter_table("team") 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 115, in flush
    fn(*arg, **kw)
  File "/usr/python/lib/python3.10/site-packages/alembic/ddl/impl.py", line 392, in add_column
    self._exec(
  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: (psycopg2.errors.NotNullViolation) column "id" of relation "team" contains null values

[SQL: ALTER TABLE team ADD COLUMN id VARCHAR(36) NOT NULL]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
[Breeze:3.10.20] root@f9871abfb8d0:/opt/airflow$

Operating System

Mac

Versions of Apache Airflow Providers

No response

Deployment

Official Apache Airflow Helm Chart

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions