django - DatabaseError:无法在 django 上打开数据库文件
问题描述
我有一个在 apache2 服务器上运行并使用sqlite数据库的Django 1.5应用程序。
数据库设置如下
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
再次更改为无法打开数据库文件。
解决方案
sqlite db 需要由 www-data 拥有,它所在的目录也是如此。
所以如果你的应用在/var/www/app
做
cd /var/www
chown www-data:www-data app
cd app
chown ww-data:www-data devdb
推荐阅读
- django - 带有正则表达式验证器的 Django 模型字段不起作用
- android - 如何在我已经打开离子和电容器代码的同一个 Android Studio 中导入/打开 Twilio android 代码?
- mysql - 我想减少 MYSQL 查询执行时间。我的查询需要很长时间?
- android - Android Studio 更改页面引导位置
- jmeter - jemeter 中每秒的请求不超过每秒 4 个
- c++ - 是否可以获得字符串的某个字符?
- node.js - “消息”中的未知名称“time_to_live”:
- sqlite - 使用 SQLite-net-pcl 无法更新数据
- ios - Xamarin iOS Release Build - 本机链接失败
- javascript - 为什么单击输入(Vue)时焦点不起作用?