Airflow 2.6初始化失败:执行airflow db init报dag_tag__fkey约束不存在
解决Airflow 2.6初始化时
dag_tag__fkey约束不存在的错误 问题根源
这个错误是Airflow数据库迁移脚本与alembic版本不兼容,或残留数据库文件导致迁移逻辑冲突所致,和你怀疑的alembic版本问题直接相关。
解决方案
1. 清理残留的Airflow数据文件
Airflow默认使用SQLite数据库,残留的旧数据库会干扰新的迁移流程:
- 删除默认数据库文件:
rm ~/airflow/airflow.db - 可选:清理日志、DAG和插件目录(如果不需要保留现有内容):
rm -rf ~/airflow/logs ~/airflow/dags ~/airflow/plugins
2. 锁定兼容的alembic版本
Airflow 2.6官方兼容的alembic版本为1.10.x,手动指定版本安装:
- 卸载现有alembic:
pip uninstall -y alembic - 安装指定兼容版本:
pip install alembic==1.10.4
3. 重新初始化数据库
执行初始化命令,确认无报错后启动standalone:
airflow db init airflow standalone
备选方案:重建干净的虚拟环境
如果上述步骤无效,彻底重建conda环境:
- 删除现有环境:
conda env remove -n airflow_3_7_2023 - 创建新环境并激活:
conda create -n airflow_3_7_2023 python=3.7 conda activate airflow_3_7_2023 - 安装Airflow时同时指定约束(避免版本冲突):
pip install apache-airflow==2.6.0 alembic==1.10.4 - 再执行数据库初始化和启动命令。
额外排查:检查SQLite版本
Airflow 2.6要求SQLite版本≥3.15.0,执行以下命令确认:
sqlite3 --version
若版本过低,可通过Homebrew升级:
brew install sqlite
升级后需确保Python环境优先使用新安装的SQLite(可通过调整PATH环境变量实现)。
内容的提问来源于stack exchange,提问作者Brian Addison
相关产品推荐
相关产品推荐

