DatabaseError: невозможно открыть файл базы данных на django - PullRequest
1 голос
/ 28 мая 2019

У меня есть приложение Django 1.5 , работающее на сервере apache2 и использующее базу данных sqlite .

Настройка для базы данных следующая

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.sqlite3',
       'NAME': '/var/www/html/project/devdb',
       'USER': '',
       'PASSWORD': '',
       'HOST': '',
       'PORT': '',
   }
}

где devdb - сгенерированный файл базы данных.

Когда я запускаю команды миграции с консоли терминала, все работает нормально, и данные переносятся в базу данных.

Но когда я захожу на URL приложения, выдается ошибка

DatabaseError at /url_path/
attempt to write a readonly database

Затем я меняю разрешение файла, используя

sudo chown 777 devdb

Затем начинает выдавать ошибку

DatabaseError at /url_path/
unable to open database file

ls -la дает следующий вывод для файла devdb

-rwxr-xr-x  1 ubuntu ubuntu   1036 May 11  2018 manage.py
-rw-rw-r--  1 ubuntu ubuntu 291840 May 28 09:31 devdb

Получение user apache2, запущенного с использованием

ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'

дает www-data

Но изменение владельца файла на www-data снова дает невозможность открыть файл базы данных .

1 Ответ

0 голосов
/ 28 мая 2019

База данных sqlite должна принадлежать www-data, как и каталог, в котором она находится.

Так что, если ваше приложение в /var/www/app, сделайте

cd /var/www
chown www-data:www-data app
cd app
chown ww-data:www-data devdb
...