kolfild26 opened a new issue, #23605:
URL: https://github.com/apache/airflow/issues/23605
### Apache Airflow version
2.3.0 (latest released)
### What happened
Hi,
Tried to upgrade from v.2.2.3 to v.2.3
`airflow upgrade db:`
```
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/base.py",
line 1705, in _execute_context
self.dialect.do_execute(
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/default.py",
line 716, in do_execute
cursor.execute(statement, parameters)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/mysql/connector/cursor_cext.py",
line 269, in execute
result = self._cnx.cmd_query(stmt, raw=self._raw,
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/mysql/connector/connection_cext.py",
line 528, in cmd_query
raise errors.get_mysql_exception(exc.errno, msg=exc.msg,
mysql.connector.errors.ProgrammingError: 1054 (42S22): Unknown column
'rendered_task_instance_fields.dag_id' in 'on clause'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/media/data/anaconda3/envs/airflow2.3/bin/airflow", line 8, in
<module>
sys.exit(main())
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/__main__.py",
line 38, in main
args.func(args)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/cli/cli_parser.py",
line 51, in command
return func(*args, **kwargs)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/utils/cli.py",
line 99, in wrapper
return f(*args, **kwargs)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/cli/commands/db_command.py",
line 82, in upgradedb
db.upgradedb(to_revision=to_revision, from_revision=from_revision,
show_sql_only=args.show_sql_only)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/utils/session.py",
line 71, in wrapper
return func(*args, session=session, **kwargs)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/utils/db.py",
line 1400, in upgradedb
for err in _check_migration_errors(session=session):
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/utils/db.py",
line 1285, in _check_migration_errors
yield from check_fn(session=session)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/airflow/utils/db.py",
line 1243, in check_bad_references
invalid_row_count = invalid_rows_query.count()
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/orm/query.py",
line 3062, in count
return self._from_self(col).enable_eagerloads(False).scalar()
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/orm/query.py",
line 2803, in scalar
ret = self.one()
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/orm/query.py",
line 2780, in one
return self._iter().one()
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/orm/query.py",
line 2818, in _iter
result = self.session.execute(
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/orm/session.py",
line 1670, in execute
result = conn._execute_20(statement, params or {}, execution_options)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/base.py",
line 1520, in _execute_20
return meth(self, args_10style, kwargs_10style, execution_options)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/sql/elements.py",
line 313, in _execute_on_connection
return connection._execute_clauseelement(
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/base.py",
line 1389, in _execute_clauseelement
ret = self._execute_context(
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/base.py",
line 1748, in _execute_context
self._handle_dbapi_exception(
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/base.py",
line 1929, in _handle_dbapi_exception
util.raise_(
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/util/compat.py",
line 211, in raise_
raise exception
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/base.py",
line 1705, in _execute_context
self.dialect.do_execute(
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/sqlalchemy/engine/default.py",
line 716, in do_execute
cursor.execute(statement, parameters)
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/mysql/connector/cursor_cext.py",
line 269, in execute
result = self._cnx.cmd_query(stmt, raw=self._raw,
File
"/media/data/anaconda3/envs/airflow2.3/lib/python3.8/site-packages/mysql/connector/connection_cext.py",
line 528, in cmd_query
raise errors.get_mysql_exception(exc.errno, msg=exc.msg,
sqlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError)
1054 (42S22): Unknown column 'rendered_task_instance_fields.dag_id' in 'on
clause'
[SQL: SELECT count(*) AS count_1
FROM (SELECT rendered_task_instance_fields.dag_id AS dag_id,
rendered_task_instance_fields.task_id AS task_id,
rendered_task_instance_fields.execution_date AS execution_date,
rendered_task_instance_fields.rendered_fields AS rendered_fields,
rendered_task_instance_fields.k8s_pod_yaml AS k8s_pod_yaml
FROM rendered_task_instance_fields
WHERE NOT (EXISTS (SELECT 1
FROM task_instance INNER JOIN dag_run ON
rendered_task_instance_fields.dag_id = task_instance.dag_id AND dag_run.run_id
= task_instance.run_id AND rendered_task_instance_fields.execution_date =
dag_run.execution_date
WHERE rendered_task_instance_fields.dag_id = task_instance.dag_id AND
rendered_task_instance_fields.task_id = task_instance.task_id))) AS anon_1]
```
The above mysql statement, which causes error, seems to be generated in the
**count(self)** function in /sqlalchemy/orm/query.py.
I ran that statement through mysql workbench and it's easy to see that it's
wrong
```
SELECT 1 FROM task_instance INNER JOIN dag_run ON
rendered_task_instance_fields.dag_id = task_instance.dag_id
AND dag_run.run_id = task_instance.run_id
AND rendered_task_instance_fields.execution_date = dag_run.execution_date
WHERE rendered_task_instance_fields.task_id = task_instance.task_id
AND rendered_task_instance_fields.dag_id = task_instance.dag_id;
```
There is no the **rendered_task_instance_fields** table in the **FROM**
clause.
I probably know how to fix the statement but the mysql code is autogenerated
(am I right?) but not hardcoded.
### What you think should happen instead
_No response_
### How to reproduce
1. upgrade airflow installation from [pip apache
airflow](https://pypi.org/project/apache-airflow/)
2. run `airflow db upgrade --show-sql-only` to check the changes.
Everything's fine.
3. run `airflow db upgrade`
### Operating System
Oracle Linux 7.8
### Versions of Apache Airflow Providers
_No response_
### Deployment
Virtualenv installation
### Deployment details
MySQL DB 5.7.10 which is supported per the
[docs](https://airflow.apache.org/docs/apache-airflow/stable/installation/prerequisites.html).
### 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]