Airflow任务实例获取失败:DAG停滞且task_fail列不存在报错
Airflow任务持续运行无结果,task_fail表列不存在错误
使用Airflow Bash Operator运行简单任务时,DAG始终处于运行状态(持续显示绿色),没有成功或失败的结果。查看日志发现以下错误信息:
airflow-scheduler_1 | [SQL: INSERT INTO task_fail (task_id, dag_id, execution_date, start_date, end_date, duration) VALUES (%(task_id)s, %(dag_id)s, %(execution_date)s, %(start_date)s, %(end_date)s, %(duration)s) RETURNING task_fail.id] airflow-scheduler_1 | [parameters: {'task_id': 'first_task', 'dag_id': 'LocalInjestionDag', 'execution_date': datetime.datetime(2023, 1, 20, 8, 0, tzinfo=Timezone('UTC')), 'start_date': datetime.datetime(2023, 1, 23, 3, 35, 27, 332954, tzinfo=Timezone('UTC')), 'end_date': datetime.datetime(2023, 1, 23, 3, 35, 27, 710572, tzinfo=Timezone('UTC')), 'duration': 0}] postgres_1 | 2023-01-23 03:55:59.712 UTC [4336] ERROR: column "execution_date" of relation "task_fail" does not exist at character 41
问题原因
Airflow元数据库的task_fail表结构与当前Airflow版本不匹配,缺少execution_date列。通常是版本升级后未执行数据库迁移,或初始化时表结构创建不完整导致。
解决步骤
- 停止Airflow所有服务(scheduler、webserver、worker等)
- 执行数据库迁移命令,更新元数据表结构:
airflow db upgrade - 重启Airflow服务,重新触发DAG任务
额外提示
- 无需继续尝试改用execution_datetime、xcom操作或切换Operator,这些操作无法解决表结构不匹配的核心问题
- 确保Airflow版本与元数据库表结构对应,避免跨版本不兼容
- 迁移后仍有问题时,检查元数据库连接配置是否正确,确认Airflow能正常读写数据库
内容的提问来源于stack exchange,提问作者Efe
相关产品推荐
相关产品推荐

