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.
}
}
37
demandé sur Martijn Pieters 2011-10-06 08:25:20

6 réponses

Django NewbieMistakes

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.

63
répondu John 2014-04-02 13:23:08

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.

19
répondu chhantyal 2013-02-19 10:15:17

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.

7
répondu Daniel Roseman 2011-10-06 08:11:35

vous devez utiliser le chemin complet au lieu de ~/.

Dans votre cas, quelque chose comme /home/harold/Harold-Server/OmniCloud.db.

4
répondu Stanislav Bondarenko 2013-08-08 23:38:48

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éé dbfolderDocumentRoot et a donné les permissions ci-dessus, et ça a marché.

1
répondu learningloop 2015-04-26 19:05:04

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...

0
répondu Yogendra Sharma 2013-05-30 01:30:08