DatabaseError:无法在Django上打开数据库文件

时间:2019-05-28 13:53:23

标签: django django-database

我有一个 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 -ladevdb文件提供以下输出

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

使用{p1>运行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 :(得分:0)

一个sqlite数据库需要归www-data所有,它所在的目录也必须拥有。

因此,如果您的应用位于/var/www/app中,请

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