运行Airflow命令行后,sqlite3引发错误

时间:2019-07-17 04:50:44

标签: sqlite airflow

当我运行命令时:airflow list_users 它引发了如下错误:

sqlite3.OperationalError: no such table: ab_permission_view_role

...

sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: 
ab_permission_view_role [SQL: 'SELECT ab_permission_view_role.id AS 
ab_permission_view_role_id, ab_permission_view_role.permission_view_id AS ab_permission_view_role_permission_view_id, ab_permission_view_role.role_id AS 
ab_permission_view_role_role_id \nFROM ab_permission_view_role JOIN 
ab_permission_view ON ab_permission_view.id = 
ab_permission_view_role.permission_view_id JOIN ab_view_menu ON ab_view_menu.id = ab_permission_view.view_menu_id \nWHERE ab_permission_view_role.role_id = ? 
AND ab_permission_view.view_menu_id != ?'] [parameters: (4, 51)] (Background on 
this error at: http://sqlalche.me/e/e3q8)

运行后还存在相同的错误:airflow create_user

3 个答案:

答案 0 :(得分:2)

发生这种情况是因为没有在airflow initdb上创建ab_ *表。所有这些表都用于基于角色的访问控制– RBAC。

要拥有这些表,请按照说明进行操作:

edit airflow.cfg

[webserver]
rbac = True

并运行airflow initdb创建这些丢失的表。

答案 1 :(得分:1)

除了牛顿·何塞(Newton Jose)的答案之外,在编辑cfg文件之后,请使用来启动网络服务器

airflow webserver

然后打开另一个终端,切换到您的工作目录并运行

airflow initdb

您现在可以启动调度程序

airflow scheduler

最重要的是,当您运行用于初始化数据库的命令时,您的Web服务器应该正在运行。至少对我有用。

答案 2 :(得分:1)

您需要在安装后执行初始化:

$ export AIRFLOW_HOME=~/airflow
$ airflow initdb

如果未设置AIRFLOW_HOME,将创建并使用~/airflow/。这是配置和日志的存储位置。如果要重置配置,请删除存储在AIRFLOW_HOME中的目录,然后重新运行airflow initdb

现在其他命令应该可以使用,例如

$ airflow version
[2019-08-15 22:39:34,673] {__init__.py:51} INFO - Using executor SequentialExecutor
  ____________       _____________
 ____    |__( )_________  __/__  /________      __
____  /| |_  /__  ___/_  /_ __  /_  __ \_ | /| / /
___  ___ |  / _  /   _  __/ _  / / /_/ /_ |/ |/ /
 _/_/  |_/_/  /_/    /_/    /_/  \____/____/|__/  v1.10.4

来源:airflow个文档中的Installation部分。