tutorial makemigrations inspectdb create database django sqlite django-models django-admin

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


Solución de NewbieMistakes

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.