【问题标题】:Airflow Webserver connecting to wrong database?Airflow Webserver 连接到错误的数据库?
【发布时间】:2021-03-24 15:03:04
【问题描述】:

我正在使用 AirFlow 版本 1.10.10 并同时运行 airflow webserverairflow scheduler 作为 kubernetes pods。理想情况下,我还想在单独的 pod 中运行 postgresql db 以获取气流。

问题是当airflow webserver 加载我的 DAG 时,它会在崩溃前记录以下内容:

...
    cursor.execute(statement, parameters)                                                                                                                                                                   
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: connection                                    
[SQL: SELECT connection.conn_id AS connection_conn_id                                                                    
FROM connection GROUP BY connection.conn_id]                                                                                    

我不明白这个 SQL 查询使用的是哪个数据库?从日志no such table: connection 我假设有一个数据库正在运行,但它是何时/如何创建的?

我没有做过类似airflow initdb 之类的事情。我还用ps检查了容器中的进程和所有使用的端口,但没有发现任何类似数据库的东西(唯一正在运行的进程和使用的端口与网络服务器相关。

对正在发生的事情有任何想法/建议吗?我确定我错过了什么。

【问题讨论】:

    标签: python airflow airflow-scheduler


    【解决方案1】:

    请注意您的错误是sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: connection,表明 sqlalchemy 正在使用sqlite3 数据库。这意味着您连接到错误的数据库。如果您打算连接到 sqlite3,它不会在 pod 之间共享,因此无论运行迁移的 sqlite3 数据库是什么,都与您的工作人员所连接的数据库不同。可能是每个 pod 上的不同数据库文件,未通过卷连接 - 因此表不存在。

    默认情况下,airflow 使用 sqlite3。见here。所以这意味着airflow找不到你的数据库连接字符串,你可以用这个环境变量AIRFLOW__CORE__SQL_ALCHEMY_CONN来设置。

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-29
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2018-12-06
      • 2018-07-09
      相关资源
      最近更新 更多