Подтвердить что ты не робот

Django "не может открыть файл базы данных"

после запуска "python manage.py syncdb", я получаю сообщение об ошибке "невозможно открыть файл базы данных".

вот важная часть моих настроек .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.

и вот разрешения для "apps.db":

-rw-r--r-- 1 root root 33792 19. Jul 10:51 apps.db

Мой сервер django вызывается из apache... я не знаю, связано ли это с разрешениями, но изменение владельца apps.db на "www-data" не работает ни на

[править]

чтобы обеспечить доступ к www-данным, я сделал следующее:

сделал следующее:

chown -R www-data apps
rm apps.db
su www-data
python manage.py syncdb

но он все равно не работает: (

4b9b3361

Ответ 1

Я решил ошибку, изменив DATABASE_NAME на абсолютный путь: /var/www/apps/apps.db.

На машине Windows обратная косая черта должна быть экранирована следующим образом: C:\\path\\to\\database\\database_name.db.

Ответ 2

Решение от NewbieMistakes

Убедитесь, что Apache также может записывать в родительский каталог база данных. SQLite должен иметь возможность писать в этот каталог.

Убедитесь, что каждая папка полного пути к файлу базы данных не запускается с номером, например. /www/ 4myweb/db (наблюдается в Windows 2000).

Если для параметра DATABASE_NAME установлено что-то вроде '/Users/yourname/Sites/mydjangoproject/db/db', убедитесь, что вы сначала создал каталог "db".

Убедитесь, что ваш каталог /tmp доступен для записи в мире (маловероятная причина как другая вещь на вашей системе также не будет работать). ls/tmp -ald следует производят drwxrwxrwt....

Убедитесь, что путь к базе данных, указанный в settings.py, является полным путь.

Ответ 3

DATABASE_NAME устарела. Вы должны использовать поддерживаемый в настоящее время формат. то есть.

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': 'C:/ispdb.sqlite',
    'USER': '',
    'PASSWORD': '',
    'HOST': '',
    'PORT': ''

}

Также см. другие настройки, которые устарели с сайта django.:))

Ответ 4

Хорошо, я ответил на этот вопрос. http://goo.gl/KAuXz

Я столкнулся с такой же проблемой. Вот моя настройка, которая сработала.

'ENGINE': 'django.db.backends.sqlite3', 
'NAME': '/home/neo/django/db/data.sqlite3'

Другие настройки в случае sqlite3 будут одинаковыми/по умолчанию.

Ответ 5

Для моей Linux-системы мне пришлось предоставить разрешение на запись владельца процесса для db.sqlite3 и , содержащей ее! Вы могли бы просто setfacl вместо этого! Пример: (https://serverfault.com/info/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