sqlite3.OperationalError: impossible d'ouvrir le fichier de la base de données
je reçois cette erreur lors de la configuration d'un serveur à Django. Il est sqlite3 ce qui signifie qu'il devrait créer le .fichier db mais il ne semble pas le faire. J'ai stipulé que SQLite serait le backend et un chemin de fichier absolu pour le placer, mais pas de chance.
Est-ce un bug ou est-ce que je fais quelque chose de incorrect? (Viens de penser, est le chemin absolu du fichier spécifié différemment dans Ubuntu?)
Voici le début de mon settings.py fichier:
# Django settings for OmniCloud project.
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
# ('Your Name', 'your_email@example.com'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': '~/Harold-Server/OmniCloud.db', # Or path to database file if using sqlite3.
'USER': '', # Not used with sqlite3.
'PASSWORD': '', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
6 réponses
PROBLÈME que Vous utilisez SQLite3, votre ATTENTE est définie à l' le chemin complet du fichier de base de données, le fichier de base de données est accessible en écriture par Apache, mais vous obtenez toujours l'erreur ci-dessus.
SOLUTION assurez-vous Qu'Apache peut aussi écrire dans le répertoire parent de la base de données. SQLite doit être capable d'écrire dans ce répertoire.
assurez-vous que chaque dossier du chemin complet de votre fichier de base de données ne démarre pas avec le numéro, par exemple. /www/4myweb/db (observé sur Windows 2000).
si DATABASE_NAME est défini à quelque chose comme /Utilisateurs/votrenom/Sites/mydjangoproject/db/db', assurez-vous que vous avez création du répertoire' db ' en premier.
assurez-vous que votre répertoire /tmp peut être écrit dans le monde entier (une cause peu probable comme autre chose sur votre système ne fonctionnera pas). ls /tmp -ald devrait produisez drwxrwxrwt ....
assurez-vous que le chemin vers la base de données spécifiée settings.py est un plein chemin.
Aussi, assurez-vous que le fichier est présent là où vous l'attendez.
j'ai affronté exactement le même problème. Voici mon décor qui a fonctionné.
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '/home/path/to/your/db/data.sqlite3'
les autres paramètres en cas de sqlite3 seront les mêmes/par défaut.
Et vous devez créer des données.sqlite3.
vous n'avez pas spécifié le chemin absolu - vous avez utilisé un raccourci , ~
, qui peut ne pas fonctionner dans ce contexte. Utilisez /home/yourusername/Harold-Server/OmniCloud.db
à la place.
vous devez utiliser le chemin complet au lieu de ~/
.
Dans votre cas, quelque chose comme /home/harold/Harold-Server/OmniCloud.db
.
dans mon cas le fichier SQLite db db.sqlite3
a été stocké dans le DocumentRoot
d'apache. Ainsi, même après avoir défini les permissions suivantes, cela n'a pas fonctionné:
sudo chown www-data:www-data /path/to/db-folder
sudo chown www-data:www-data /path/to/db-folder/sqlite-db.db
Enfin, quand j'ai déménagé db.sqlite3
pour un dossier nouvellement créé dbfolder
DocumentRoot
et a donné les permissions ci-dessus, et ça a marché.
Utilisez ce type ça marche pour moi . windows 7 avec python 2.7 et django 1.5
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'C:\tool\mysite\data.db',
j'espère que sa fonctionne...