数据库错误:无法打开数据库文件,但仅限 Django 管理员

发布于 2024-10-15 02:30:58 字数 532 浏览 2 评论 0原文

这可能是我使用 Django 4 年以来遇到的最奇怪的问题。

我的网站在本地运行正常。在生产环境中,它也运行良好,但当我尝试访问管理站点时,我收到一个服务器错误,即 Apache 错误日志中的“OperationalError:无法打开数据库文件”。

DB文件是全局可写的,并且设置中的路径是绝对的。生产环境为Ubuntu Lucid / Python 2.6 / Sqlite3。我尝试了 Django 1.2.4 和 1.3 beta。

奇怪的是,我可以在服务器上同步数据库。它创建表和管理员用户。我可以毫无问题地访问该网站。我可以运行 shell 并在 python 提示符中创建内容。该网站是可浏览的。只有当我访问管理员时,我才会收到此错误。

我没有任何推理的依据。非常感谢任何帮助。

ps: 该错误是在 Apache 级别引发的,而不是从 Django 引发的。 Django 回溯位于 Apache 错误日志中,其中显示DatabaseError:无法打开数据库文件

This may be the strangest problem in my 4 years with Django.

My site is working alright locally. In production environment it also runs fine, except, when I try to access the admin site, I get a server error which is an "OperationalError: unable to open database file" in the Apache error log.

The DB file is world writable and the path in the settings are absolute. The production environment is Ubuntu Lucid / Python 2.6 / Sqlite3. I tried both with Django 1.2.4 and 1.3 beta.

The weird part is, I can syncdb on server. It creates the tables and the admin user. I can access the site without problem. I can run shell and create content within python prompt. The site is browsable. It is only when I access admin, I get this error.

I have no basis left for any reasoning. Any help is greatly appreciated.

ps: The error is raised at Apache level, not from Django. The Django traceback is in Apache error log, which reads DatabaseError: unable to open database file.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千柳 2024-10-22 02:30:58

一个愚蠢的猜测。

哪个用户正在运行 apache?

我知道网站的其余部分正常工作很奇怪,但请仔细检查您的 sqlite 数据库是否可以从运行 Apache 的用户访问并读写!

A stupid guess.

Which user is running apache?

I know it's strange that the rest of the site works, but double-check your sqlite db is reachable and read-writable from the user Apache is running as!

箹锭⒈辈孓 2024-10-22 02:30:58
sudo chown www-data /var/www/yourproject/db.sqlite3

这就能解决问题(将用户设置为 Apache)

sudo chown www-data /var/www/yourproject/db.sqlite3

this will do the trick(set the user to Apache)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文