【发布时间】:2019-10-14 01:50:13
【问题描述】:
我有一个 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 再次导致无法打开数据库文件。
【问题讨论】:
-
Django 1.5 已有多年历史,不受支持且不安全。你应该升级。
-
当然。由于应用程序的代码库很大,我用最新版本的 Django 编写它。