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?

1voto

tzndr Points 21

Il s'agit certainement d'un problème de permissions. Si quelqu'un obtient cette erreur sur linux, assurez-vous d'exécuter la commande avec sudo car le fichier est probablement détenu par root. J'espère que cela vous aidera!

1voto

ANKIT CHOPADE Points 29

Utilisez le nom entièrement classifié du fichier de base de données

Utilisez- /home/ankit/Desktop/DS/Week-7-MachineLearning/Week-7-MachineLearning/soccer/database.sqlite

au lieu de-

1voto

crazycoder65 Points 13

Si cela se produit de manière aléatoire après avoir pu accéder correctement à votre base de données (et que aucun paramètre n'a été modifié), cela pourrait être le résultat d'une base de données corrompue.

J'ai eu cette erreur après avoir essayé d'écrire dans ma base de données à partir de deux processus en même temps et cela a dû corrompre mon fichier db.sqlite3.

Ma solution a été de retourner à un commit précédent avant que la corruption ne se produise.

1voto

TH Todorov Points 688

Rencontrez l'erreur sur Windows, ajouté assert os.path.exists, vérifié à nouveau le chemin, exécuté le script en tant qu'administrateur, rien n'a aidé.

Il s'avère que si vous ajoutez vos dossiers à la protection anti-ransomware de Windows Defender, vous ne pouvez plus utiliser d'autres programmes pour écrire dedans à moins d'ajouter ces programmes à la liste blanche de l'Accès contrôlé au dossier.

Solution - vérifiez si votre dossier a été ajouté à la protection anti-ransomware de Windows Defender et supprimez-le pour une solution plus rapide.

1voto

majid bhatti Points 95

Si quelqu'un arrive de nouveau ici après avoir été accueilli par cette erreur, les formes valides d'URL SQLite sont l'une des suivantes :

sqlite:///:memory: (ou, sqlite://)
sqlite:///chemin/relatif/vers/fichier.db
sqlite:////chemin/absolu/vers/fichier.db

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