【问题标题】:Django/Apache error "attempt to write a readonly database" [closed]Django/Apache 错误“尝试编写只读数据库”[关闭]
【发布时间】:2016-03-14 09:58:18
【问题描述】:

我迷路了,我已经尝试了有关此问题的所有方法,但找不到解决方案。 我在 django 1.8 / python 3.3.5 / centos 7 / apache 上有应用程序。这里是默认的 sqlite db。 Everytihng 在 django 的网络服务器上运行良好,但在 Apache 上出现错误“尝试编写只读数据库”失败。 我已根据此文档 https://code.djangoproject.com/wiki/NewbieMistakes#DjangosaysUnabletoOpenDatabaseFilewhenusingSQLite3 完成所有检查 db 文件及其根文件夹具有写入权限和“apache apache”用户所有者,但仍然是相同的错误:

OperationalError at /logout/
attempt to write a readonly database
Request Method: GET
Request URL:    http://app.server.corp/logout/
Django Version: 1.8
Exception Type: OperationalError
Exception Value:    
attempt to write a readonly database
Exception Location: /usr/local/lib/python3.3/site-            packages/django/db/backends/sqlite3/base.py in execute, line 318
Python Executable:  /usr/local/bin/python3.3/

【问题讨论】:

  • 这可能是 SELinux 安全上下文的问题吗?我过去也遇到过类似的问题。
  • 你完全正确!这是 SELinux 的问题,关闭应用程序启动后正常工作
  • 我在评论中添加了答案。

标签: python django apache


【解决方案1】:

这是因为“尝试写入只读数据库” 所以对我来说帮助在 shell 中关注:

chmod 755 db.sqlite3

所以我们只是更改了对 DB 文件的权限。换句话说,服务器无法写入文件。

【讨论】:

  • 德米特里,谢谢您的回答!启用的 SELinux 存在问题。正如我之前读过的那样,使用 chmod 777 并不那么安全,更好的方法是使用 755 权限,并将 apache 用户作为该文件的所有者。
  • 如果我的回答有效,请加分:)
猜你喜欢
  • 2014-12-07
  • 2023-03-09
  • 2014-01-30
  • 2021-11-07
  • 2016-08-16
  • 2016-10-20
  • 2011-01-20
  • 1970-01-01
  • 2015-10-27
相关资源
最近更新 更多