[英]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
我已經檢查了文件的權限。 使用chown
和chgrp
將文件的用戶和組設置為 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.