【问题标题】:DatabaseError: unable to open database file on djangoDatabaseError:无法在 django 上打开数据库文件
【发布时间】: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 -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

获取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 编写它。

标签: django django-database


【解决方案1】:

一个 sqlite db 需要由 www-data 拥有,它所在的目录也是如此。

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

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

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 2011-03-17
    • 1970-01-01
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    相关资源
    最近更新 更多