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