database - makemigrations - Django es "incapaz de abrir el archivo de la base de datos"
django sqlite3 config (6)
Bueno, respondí sobre esta pregunta. http://goo.gl/KAuXz
Me enfrenté exactamente al mismo problema. Aquí está mi configuración que funcionó.
''ENGINE'': ''django.db.backends.sqlite3'',
''NAME'': ''/home/neo/django/db/data.sqlite3''
Otra configuración en caso de sqlite3 será la misma / predeterminada.
después de ejecutar "python manage.py syncdb" recibo un error que dice "no se puede abrir el archivo de la base de datos".
aquí está la parte importante de mi 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.
y aquí están los permisos para "apps.db":
-rw-r--r-- 1 root root 33792 19. Jul 10:51 apps.db
Mi servidor django se llama desde apache ... no sé si tiene que ver con los permisos, pero cambiar el propietario de apps.db a "www-data" tampoco funcionó
[editar]
para garantizar que www-data pueda acceder a todo esto, hice lo siguiente:
hizo lo siguiente:
chown -R www-data apps
rm apps.db
su www-data
python manage.py syncdb
Pero todavía no funciona :(
DATABASE_NAME está en desuso. Debe usar el formato actualmente admitido. es decir
DATABASES = {
''default'': {
''ENGINE'': ''django.db.backends.sqlite3'',
''NAME'': ''C:/ispdb.sqlite'',
''USER'': '''',
''PASSWORD'': '''',
''HOST'': '''',
''PORT'': ''''
}
Y también ver otras configuraciones que están en desuso del sitio web de django :))
Para cambiar el permiso del directorio principal, puede usar el siguiente conjunto de comandos:
compruebe el proceso de apache para apache v2:
ps -ef | grep apache | grep -v grep
el usuario / grupo es www-data
chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir
Ref: https://askubuntu.com/questions/58725/how-do-we-know-that-a-directory-is-apache-writable
Para mi sistema Linux, tuve que otorgar permiso de escritura al propietario del proceso tanto para el db.sqlite3 como para el directorio que lo contenía. ¡Podrías simplemente configurarfacl en su lugar! ejemplo: ( https://serverfault.com/questions/484818/best-way-to-set-up-permissions-with-nginx-php-fpm-on-shared-hosting ).
(py2.7) [me @ server django-project-container] $ 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
Resolví el error cambiando DATABASE_NAME a una ruta absoluta: /var/www/apps/apps.db
.
En una máquina con Windows, la barra invertida debería escaparse como: C://path//to//database//database_name.db
.
Asegúrese de que Apache también pueda escribir en el directorio principal de la base de datos. SQLite necesita poder escribir en este directorio.
Asegúrese de que cada carpeta de la ruta completa de su archivo de base de datos no comience con el número, ej. / www / 4myweb / db (observado en Windows 2000).
Si DATABASE_NAME está configurado para algo como ''/ Users / yourname / Sites / mydjangoproject / db / db'', asegúrese de haber creado primero el directorio ''db''.
Asegúrese de que su directorio / tmp sea escribible en todo el mundo (una causa poco probable ya que otra cosa en su sistema tampoco funcionará). ls / tmp -ald debería producir drwxrwxrwt ....
Asegúrese de que la ruta a la base de datos especificada en settings.py sea una ruta completa.