簡體   English   中英

Django 管理后端“操作錯誤”嘗試編寫只讀數據庫

[英]Django admin backend 'Operational Error' attempt to write a readonly database

這個問題似乎已經被問過很多次了,但我檢查過的所有解決方案都沒有對我有用。 我在安裝了 Django 1.6.1 的 Ubuntu 14.04 服務器上運行nginx 我正在嘗試為項目使用默認的 django 管理后端(通常在 localhost/admin/)。

我遇到的問題是OperationalError at /admin/ attempt to write a readonly database

(當我更改 db.sqlite3 文件的 chmod 權限時更新,錯誤現在OperationalError at /admin/ unable to open database file讀取OperationalError at /admin/ unable to open database file但我已經檢查了Django 新手錯誤網站上的每個選項以獲得答案並且沒有骰子)

一些答案談到了生成的數據庫文件db.sqlite3的 r+w+x 權限,據我所知,即使 db 文件上的777也沒有做任何事情,所以我將它保持在656

據我所知,django 項目可以找到(所有頁面都可以正常呈現,/admin 頁面在沒有 css 的情況下呈現。當我嘗試使用 localhost/admin/ 登錄並單擊提交時,我得到了帶有錯誤的 django 調試頁面)。 它們都歸root:root 我曾嘗試更改www-data:www-data擁有的每個文件和目錄的權限,但什么也沒有。

我什至嘗試將 settings.py 更改為數據庫的絕對路徑而不是os.path.join(BASE_DIR, 'db.sqlite3')

我認為這歸結為所有權問題,但我會接受任何幫助。

在所有的麻煩和 2 個多小時的撞牆之后,檔案館的答案......

我正在使用 gunicorn,我從 Digital Ocean 設置了一個餅干切割機,它使用戶 django。 我認為千篇一律的方法將是一種快捷方式,易於修改並跳過無聊的部分。 原來在/etc/init/gunicorn.conf setuidsetgid被設置為用戶 django。 我沒有閱讀文檔並假設這些沒有什么意義的錯。

如果您遇到此問題,請刪除setuidsetgid或將它們設置為www-data

這個錯誤通常是由以不同的用戶身份運行服務器引起的(我猜你正在運行一台 linux 機器)。 如果您以 root/管理員身份創建項目並以較低狀態的用戶身份運行服務器,那么您將收到錯誤消息。

嘗試使用 sudo 權限運行服務器,即

sudo python3 manage.py runserver

暫無
暫無

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

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