python sqlite3 OperationalError:尝试编写只读数据库

时间:2016-11-20 10:59:24

标签: python apache sqlite mod-wsgi

我正在尝试使用WSGI在CentOS Apache2上运行Flask REST服务。 REST服务需要非常小的存储空间。所以我决定将SQLite与sqlite3 python包一起使用。当使用app.run()运行时,整个应用程序在我的本地系统和CentOS服务器上运行得非常好。但是当我使用WSGI在Apache上托管应用程序时,我正在

OperationalError: attempt to write a readonly database

我已检查过该文件的权限。使用chownchgrp将文件的用户和组设置为apache(运行服务器的位置)。此外,该文件具有rwx权限。我仍然得到只读数据库错误。以下是通过在db文件上运行ls -al得到的结果:

-rwxrwxrwx. 1 apache apache 8192 Nov 19 01:39 dbfile.db

我的Apache配置:

<VirtualHost *>
ServerName wlc.host.com

WSGIDaemonProcess wlcd
WSGIScriptAlias / /var/www/html/wlcd.wsgi
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
<Directory /var/www/html/>
    WSGIProcessGroup wlcd
    WSGIApplicationGroup %{GLOBAL}
    Order deny,allow
    Allow from all
    Require all granted
</Directory>

3 个答案:

答案 0 :(得分:10)

除了更改数据库文件权限之外,还需要更改承载数据库文件的目录的权限。您可以尝试以下命令:

chmod 664 /path/to/your/directory/

您还可以按如下方式更改目录的所有者:

chown apache:apache /path/to/your/directory/

答案 1 :(得分:0)

对我有用的(我没有sudo)是删除数据库文件和所有迁移,然后重新开始,如此处所述:How do I delete DB (sqlite3) in Django 1.9 to start from scratch?

答案 2 :(得分:-1)

运行

sudo chmod 777 path-to-your-djangoproject-directory 

该目录应该是包含manage.py和db.sqlite3文件的目录。 (父容器)。

以我的情况工作。