2
votes

sqlite3 a généré une erreur après l'exécution de la ligne de commande Airflow

Quand j'ai exécuté la commande: airflow list_users Cela a soulevé une erreur comme ci-dessous:

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)

Il y a aussi la même erreur après l'exécution: airflow create_user


2 commentaires

Est-ce que vous exécutez le airflow initdb d' airflow upgradedb airflow initdb / airflow upgradedb d' airflow upgradedb commande après l' installation / la configuration d' une nouvelle méta-db pour votre déploiement Airflow?


oui, j'ai exécuté les deux commandes, mais cela ne fonctionnait toujours pas avec la même erreur.


3 Réponses :


18
votes

Cela s'est produit parce que les tables ab_ * n'ont pas été créées dans airflow initdb . Toutes ces tables sont pour le contrôle d'accès basé sur les rôles - RBAC.

Pour avoir ces tableaux, suivez les instructions:

edit airflow.cfg

[webserver]
rbac = True

et exécutez airflow initdb pour créer ces tables manquées.


0 commentaires

5
votes

En plus de la réponse de Newton Jose, après avoir édité le fichier cfg, démarrez le serveur web en utilisant

airflow scheduler

Ensuite, ouvrez un autre terminal, passez à votre répertoire de travail et exécutez

airflow initdb

Vous pouvez maintenant démarrer votre planificateur

airflow webserver

L'essentiel est que votre serveur Web doit être en cours d'exécution lorsque vous exécutez la commande d'initialisation de la base de données. Au moins, c'est ce qui a fonctionné pour moi.


0 commentaires

1
votes

Vous devez effectuer l'initialisation après l'installation:

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

Si AIRFLOW_HOME n'est pas AIRFLOW_HOME , ~/airflow/ sera créé et utilisé. C'est là que la configuration et les journaux seront stockés; si vous souhaitez réinitialiser la configuration, supprimez le AIRFLOW_HOME stocké dans AIRFLOW_HOME et réexécutez airflow initdb .

Maintenant, d'autres commandes devraient fonctionner, par exemple

$ export AIRFLOW_HOME=~/airflow
$ airflow initdb

Source: Installation section du airflow d' airflow docs.


0 commentaires