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


问题内容

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

OperationalError: attempt to write a readonly database

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

-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>

问题答案:

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

chmod 664 /path/to/your/directory/

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

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