You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Airflow日志出现execution_date日期格式错误警告求解决方案

解决Airflow中execution_date的datetime格式警告与显示异常问题

我之前帮团队解决过完全一样的问题!这个警告和执行时间异常的根源,其实是MySQL版本与Airflow默认的datetime格式不兼容——尤其是当你的MySQL版本低于5.6.4时,它不支持带时区的微秒级datetime类型,而Airflow默认会生成带时区的时间戳(比如2019-09-19 12:43:01.642075+00:00),直接写入就会触发警告,后续的时间解析也会出错,导致显示异常。

以下是亲测有效的解决步骤:

1. 先确认你的MySQL版本

登录MySQL执行这条命令查看版本:

SELECT VERSION();

如果版本低于5.6.4,要么升级MySQL,要么按下面的配置修改来适配旧版本;如果版本符合要求,那大概率是数据库连接配置的时区问题。

2. 修改Airflow配置适配格式

找到你的Airflow主配置文件(一般是airflow.cfg),做两处关键修改:

  • 在[core]段,更新数据库连接字符串,指定时区并确保驱动兼容:
    sql_alchemy_conn = mysql+pymysql://your_username:your_password@db_host:db_port/airflow_db?charset=utf8mb4&time_zone=%2B00%3A00
    
    这里的%2B00%3A00是URL编码后的+00:00(UTC时区),避免时区转换时出现格式混乱,同时推荐用pymysql驱动替代mysql-connector-python,兼容性更好。
  • 在[operators]段,给默认参数添加强制格式转换:
    default_args =
        {
            "execution_date": "{{ execution_date.strftime('%Y-%m-%d %H:%M:%S') }}"
        }
    
    这会把Airflow生成的带微秒和时区的时间,转换成MySQL能识别的标准datetime格式。

3. 修复已存在的异常数据

如果已经有任务的execution_date显示异常(比如09-19T05:00:00+00:00这种格式),需要手动更新数据库里的记录:

UPDATE task_instance
SET execution_date = STR_TO_DATE(LEFT(execution_date, 19), '%Y-%m-%d %H:%M:%S')
WHERE execution_date LIKE '%+00:00';

这条SQL会把带时区的字符串截取前19位,转换成标准datetime格式。如果你的时区不是UTC,记得调整对应的转换逻辑。

4. 验证修复效果

重启Airflow的scheduler和webserver服务,跑一个测试任务:

  • 查看日志,确认sqlalchemy/engine/default.py的警告是否消失;
  • 检查任务的execution_date显示是否恢复正常(应该是类似2019-09-19 12:43:01的格式)。

内容的提问来源于stack exchange,提问作者Ronen Amsalem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:57:13