après avoir exécuté "python manage.py syncdb", une erreur s'est produite indiquant "impossible d'ouvrir le fichier de base de données".
voici la partie importante de mon settings.py:
DATABASE_ENGINE = 'sqlite3' # 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'Oracle'.
DATABASE_NAME = 'apps.db' # Or path to database file if using sqlite3.
DATABASE_USER = '' # Not used with sqlite3.
DATABASE_PASSWORD = '' # Not used with sqlite3.
DATABASE_Host = '' # Set to empty string for localhost. Not used with sqlite3.
DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3.
et voici les autorisations pour "apps.db":
-rw-r--r-- 1 root root 33792 19. Jul 10:51 apps.db
Mon serveur Django est appelé depuis Apache ... Je ne sais pas s'il s'agit d'autorisations, mais changer le propriétaire de apps.db en "www-data" ne fonctionnait pas non plus.
[modifier]
pour que www-data puisse accéder à tout cela, j’ai fait ce qui suit:
a fait ce qui suit:
chown -R www-data apps
rm apps.db
su www-data
python manage.py syncdb
mais cela ne fonctionne toujours pas :(
J'ai résolu l'erreur en remplaçant DATABASE_NAME par un chemin absolu: /var/www/apps/apps.db
.
Sur une machine Windows, la barre oblique inversée doit être échappée comme suit: C:\\path\\to\\database\\database_name.db
.
Assurez-vous qu'Apache peut également écrire dans le répertoire parent du fichier base de données. SQLite doit pouvoir é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 numéro, par exemple./www/4myweb/db (observé sous Windows 2000).
Si DATABASE_NAME est défini sur quelque chose comme '/ Users/votrenom/Sites/mydjangoproject/db/db', assurez-vous que vous avez bien créé le répertoire 'db' en premier.
Assurez-vous que votre répertoire/tmp est accessible en écriture universelle (une cause improbable, car Toute autre chose sur votre système ne fonctionnera pas non plus). ls/tmp -ald devrait produire drwxrwxrwt ....
Assurez-vous que le chemin d'accès à la base de données spécifiée dans settings.py est un fichier .__ complet. chemin.
DATABASE_NAME est obsolète. Vous devez utiliser le format actuellement pris en charge . i.e.
DATABASES = {
'default': {
'ENGINE': 'Django.db.backends.sqlite3',
'NAME': 'C:/ispdb.sqlite',
'USER': '',
'PASSWORD': '',
'Host': '',
'PORT': ''
}
Et consultez également les autres paramètres qui sont déconseillés sur le site Web de Django. :))
Pour mon système Linux, je devais donner l’autorisation en écriture du propriétaire du processus à la fois à db.sqlite3 et au répertoire qui le contenait! Vous pourriez simplement mettre setfacl à la place! exemple: ( https://serverfault.com/questions/484818/best-way-to-set-up-permissions-with-nginx-php-fpm-on-shared-hosting ).
(py2.7) [serveur @ Django-projet-conteneur] $ ls -la djangoproject /
drwxrwxr-x. 6 root nginx 4096 Jun 14 01:05 .
drwxr-xr-x. 6 root root 4096 Jun 13 23:47 ..
-rwxrwxrwx. 1 root nginx 49152 Jun 14 01:05 db.sqlite3
Eh bien, j'ai répondu à cette question. http://goo.gl/KAuXz
J'ai fait face exactement au même problème. Voici mon réglage qui a fonctionné.
'ENGINE': 'Django.db.backends.sqlite3',
'NAME': '/home/neo/Django/db/data.sqlite3'
Les autres paramètres dans le cas de sqlite3 seront identiques/par défaut.
Pour modifier l'autorisation du répertoire parent, vous pouvez utiliser le jeu de commandes ci-dessous:
vérifiez le processus Apache pour Apache v2:
ps -ef | grep Apache | grep -v grep
l'utilisateur/groupe est www-data
chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir
Réf: https://askubuntu.com/questions/58725/how-do-we-know-that-a-directory-is-Apache-writable