【问题标题】:python sqlite3 OperationalError: attempt to write a readonly databasepython sqlite3 OperationalError:尝试写入只读数据库
【发布时间】:2017-04-03 20:21:11
【问题描述】:

我正在尝试使用 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>

【问题讨论】:

    标签: python apache sqlite mod-wsgi


    【解决方案1】:

    运行

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

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

    在我的情况下工作。

    【讨论】:

    • 为整个项目目录授予 777 权限是个坏主意。
    • 不应该这样做。改为执行 774。最后 4 个仅向第三方提供读取权限。不要把7放在最后。大不号。
    【解决方案2】:

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

    【讨论】:

    • 是的,对我来说,我从 git clone 获取了数据库并抛出了错误。删除它解决了 pb
    【解决方案3】:

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

    chmod 664 /path/to/your/directory/
    

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

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

    【讨论】:

    • 您是否将目录的所有者更改为apache:apache
    • 我的烧瓶应用程序的python包具有权限drw-rw-r--(带有apache:apache),并且导入它的wsgi脚本也具有相同的权限。
    • 尝试添加-R like chown -R apache:apache /path/to/your/directory/
    • 是的,没错。您可以发布您的 Apache 配置吗?
    • 我在这里读到了关于禁用 SELinux stackoverflow.com/questions/24261716/… 以为我会试一试的,所以我做了。它确实有效。但不确定,还有什么其他可能出错的地方
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-27
    • 2021-03-22
    • 2018-03-07
    • 2021-11-07
    相关资源
    最近更新 更多