簡體   English   中英

python sqlite3 OperationalError:嘗試編寫只讀數據庫

[英]python sqlite3 OperationalError: attempt to write a readonly database

我正在嘗試使用 WSGI 在 CentOS Apache2 上運行 Flask REST 服務。 REST 服務需要非常小的存儲空間。 所以我決定將 SQLite 與sqlite3 python 包一起使用。 使用app.run()運行時,整個應用程序在我的本地系統和 CentOS 服務器上運行app.run() 但是當我使用 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>

除了更改數據庫文件權限之外,您還需要更改托管數據庫文件的目錄的權限。 您可以嘗試以下命令:

chmod 664 /path/to/your/directory/

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

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

對我有用的(我沒有 sudo)是刪除數據庫文件和所有遷移並重新開始,如下所述: 如何刪除 Django 1.9 中的 DB (sqlite3) 以從頭開始?

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

該目錄應該是包含 manage.py 和 db.sqlite3 文件的目錄。 (父容器)。

在我的情況下工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM