103 votes

Sqlite3, OperationalError: impossible d'ouvrir le fichier de base de données

Question: Pourquoi je ne peux pas ouvrir la base de données?


Info: Je travaille sur un projet utilisant la base de données sqlite3. J'ai écrit un programme de test qui s'exécute et lui passe la base de données :

/tmp/cer/could.db

Le programme de test unitaire peut créer la db sans aucun problème. Mais, lorsque j'utilise réellement le programme en lui passant le même emplacement, j'ai obtenu l'erreur suivante:

OperationalError: impossible d'ouvrir le fichier de base de données

J'ai essayé de le faire avec:

1) une base de données vide.
2) la base de données et le test unitaire laissés derrière.
3) aucune base de données du tout.

Dans les trois cas, j'ai obtenu l'erreur ci-dessus. La partie la plus frustrante est que l' unittest peut le faire très bien, mais le programme réel ne peut pas.

Des idées sur ce qui se passe sur terre?

0voto

Thayne Trevenen Points 11

Assurez-vous de ne pas modifier le fichier settings.py tout en essayant d'exécuter syncdb, vous obtiendrez la même erreur !!!

self.connection = Database.connect(**kwargs)
sqlite3.OperationalError: impossible d'ouvrir le fichier de base de données

0voto

1) Vérifiez le chemin de votre base de données, vérifiez dans vos paramètres.py

DATABASES = {
    'default': {
        'CONN_MAX_AGE': 0,
        'ENGINE': 'django.db.backends.sqlite3',
        'HOST': 'localhost',
        'NAME': os.path.join(BASE_DIR, 'project.db'),
        'PASSWORD': '',
        'PORT': '',
        'USER':''

parfois il n'y aura pas 'NAME': os.path.join(BASE_DIR, 'project.db'),

2) Assurez-vous des autorisations et de la propriété du dossier de destination

ça a marché pour moi,

0voto

The Doctor Points 123

Mes raisons étaient très stupides. J'avais laissé tomber le manage.py dans le terminal donc il s'exécutait en utilisant le chemin complet. Et j'avais changé le nom du dossier du projet. Maintenant, le programme était incapable de trouver le fichier avec les données précédentes et donc l'erreur est survenue.

Assurez-vous de redémarrer le logiciel dans de tels cas.

0voto

micmia Points 101

Pour toute personne ayant un problème de flux d'air lié à ce problème.

Dans mon cas, j'ai initialisé le flux d'air dans /root/airflow et exécuté son planificateur en tant que root. J'ai utilisé le paramètre run_as_user pour imiter l'utilisateur web lors de l'exécution des instances de tâches. Cependant, le flux d'air échouait toujours à déclencher mon DAG avec les erreurs suivantes dans les journaux :

sqlite3.OperationalError: unable to open database file
...
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) unable to open database file

J'ai également constaté qu'une fois que j'avais déclenché manuellement un DAG, un nouveau répertoire de ressources d'airflow était automatiquement créé sous /home/web. Je ne suis pas clair sur ce comportement, mais j'ai réussi en supprimant l'ensemble des ressources d'airflow de /root, en réinitialisant la base de données d'airflow sous /home/web et en exécutant le planificateur en tant que web sous:

[root@host ~]# rm -rf airflow
[web@host ~]$ airflow initdb
[web@host ~]$ airflow scheduler -D

Si vous voulez essayer cette approche, il pourrait être nécessaire de sauvegarder vos données avant de faire quoi que ce soit.

0voto

Tim Points 35

Avais le même problème mais la réponse principale est trop longue pour moi donc je suggère d'ouvrir une autre fenêtre shell et taper cd #entrée et essayer à nouveau

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X