Airflow 2.2.5调度器启动失败:taskinstancestate无法转为MySQL类型
错误含义
'Python taskinstancestate cannot be converted to a MySQL type' 这个报错的本质是:Airflow内部的TaskInstanceState枚举类型,无法被你当前使用的mysqlconnector驱动转换为MySQL数据库可识别的数据类型,导致调度器与数据库交互时类型转换失败,进而无法正常启动。
解决思路
- 更换数据库驱动:Airflow官方推荐MySQL使用
mysqlclient而非mysqlconnector。先卸载现有驱动:
再安装适配性更好的pip uninstall mysql-connector-pythonmysqlclient:
之后修改pip install mysqlclientsql_alchemy_conn配置为mysql://airflow_user:airflow_password@localhost:3306/airflow_db即可。 - 检查并调整SQLAlchemy版本:Airflow 2.2.5仅兼容SQLAlchemy 1.4.x系列,不支持2.x版本。执行以下命令查看当前版本:
若版本过高,降级到兼容版本:pip show sqlalchemypip install sqlalchemy==1.4.46 - 重新初始化数据库:完成上述操作后,先停掉webserver和调度器,执行命令重置并初始化数据库(无已运行DAG,数据清空无影响):
之后重新启动调度器和webserver。airflow db reset airflow db init - 验证数据库配置:登录MySQL,确认
airflow_db的字符集为utf8mb4、存储引擎为InnoDB:
若不符合,执行修改命令:SELECT @@character_set_database, @@storage_engine;
同时确保MySQL配置文件(my.cnf/my.ini)中设置ALTER DATABASE airflow_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;default-storage-engine=InnoDB。
内容的提问来源于stack exchange,提问作者forastierii
相关产品推荐
相关产品推荐

