GitHub user zoomingrocket created a discussion: Airflow v3 - Issue with FAB Auth – Missing "session" Table After Fresh Install
Hi All, I'm a first-time Airflow user and could use some help. We set up Airflow using the PyPI method with version 3.0.4 and constraints, following the official docs: ```bash pip install "apache-airflow[celery]==3.0.4" --no-cache-dir --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.0.4/constraints-3.9.txt" ``` We also installed: ```bash pip install psycopg2 asyncpg apache-airflow-providers-fab ``` After updating `airflow.cfg` with our Postgres `sql_alchemy_conn`, we ran `airflow db migrate`. Initial setup worked fine using SimpleAuth, and we verified the UI with a basic admin user. Later, we switched to FAB authentication by updating: ```ini auth_manager = airflow.providers.fab.auth_manager.fab_auth_manager.FabAuthManager ``` On first startup, roles were provisioned and we added a user via `airflow users create`. However, after restarting the API server, the UI now shows: **"Oops! Something bad has happened."** <img width="1203" height="503" alt="image" src="https://github.com/user-attachments/assets/27037439-8ac0-4261-8e4d-720cb9f791f9" /> Logs indicate the **"session" table is missing**, which is confusing since this is a fresh install and we ran `airflow db migrate`. `[2025-09-11T20:33:05.173+0000] {app.py:1744} ERROR - Exception on /login/ [GET] Traceback (most recent call last): File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context self.dialect.do_execute( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute cursor.execute(statement, parameters) psycopg2.errors.UndefinedTable: relation "session" does not exist LINE 2: FROM session ^ The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/flask/app.py", line 2529, in wsgi_app response = self.full_dispatch_request() File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/flask/app.py", line 1826, in full_dispatch_request return self.finalize_request(rv) File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/flask/app.py", line 1847, in finalize_request response = self.process_response(response) File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/flask/app.py", line 2344, in process_response self.session_interface.save_session(self, ctx.session, response) File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/airflow/providers/fab/www/session.py", line 33, in save_session return super().save_session(*args, **kwargs) File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/flask_session/sessions.py", line 543, in save_session saved_session = self.sql_session_model.query.filter_by( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/orm/query.py", line 2824, in first return self.limit(1)._iter().first() File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/orm/query.py", line 2916, in _iter result = self.session.execute( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/orm/session.py", line 1717, in execute result = conn._execute_20(statement, params or {}, execution_options) File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1710, in _execute_20 return meth(self, args_10style, kwargs_10style, execution_options) File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/sql/elements.py", line 334, in _execute_on_connection return connection._execute_clauseelement( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1577, in _execute_clauseelement ret = self._execute_context( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1953, in _execute_context self._handle_dbapi_exception( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 2134, in _handle_dbapi_exception util.raise_( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/util/compat.py", line 211, in raise_ raise exception File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context self.dialect.do_execute( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute cursor.execute(statement, parameters) sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "session" does not exist LINE 2: FROM session ^ [SQL: SELECT session.id AS session_id_1, session.session_id AS session_session_id, session.data AS session_data, session.expiry AS session_expiry FROM session WHERE session.session_id = %(session_id_1)s LIMIT %(param_1)s] [parameters: {'session_id_1': '5cf8bbb5-26df-4c8a-b6ae-1ea61bc20456', 'param_1': 1}] (Background on this error at: https://sqlalche.me/e/14/f405) [2025-09-11T20:33:05.179+0000] {app.py:1852} ERROR - Request finalizing failed with an error while handling an error Traceback (most recent call last): File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/base.py", line 1910, in _execute_context self.dialect.do_execute( File "/airflow/poc/3.0.4/lib64/python3.9/site-packages/sqlalchemy/engine/default.py", line 736, in do_execute cursor.execute(statement, parameters) psycopg2.errors.UndefinedTable: relation "session" does not exist LINE 2: FROM session` Any guidance on what we might have missed or common gotchas would be greatly appreciated! Thanks in advance! GitHub link: https://github.com/apache/airflow/discussions/55549 ---- This is an automatically sent email for [email protected]. To unsubscribe, please send an email to: [email protected]
