2011-01-31 50 views
5

这可能是我Django 4年来最奇怪的问题。DatabaseError:无法打开db文件,但只能用于Django admin

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

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

奇怪的部分是,我可以在服务器上syncdb。它创建表和管理员用户。我可以毫无问题地访问该网站。我可以运行shell并在python提示符下创建内容。该网站是可浏览的。只有当我访问管理员,我得到这个错误。

我没有任何推理的依据。任何帮助是极大的赞赏。

ps:错误发生在Apache级别,而不是Django。 Django回溯在Apache错误日志中,其内容为DatabaseError: unable to open database file

+0

你确保所有的车型都在数据库中的相同版本的怎么样?我曾经有过类似的问题,并且一开始我并没有意识到这一点,因为我很少在普通页面上使用这种模型。但管理员会一次打开所有人。 – 2011-01-31 09:57:55

+0

我无法找到模型的任何问题。无论如何,我可以在本地访问管理网站。另外,如果它是模型,我会得到一个不同的错误,而不是“无法打开数据库文件”。所以它一定是我想的其他东西。谢谢。 – omat 2011-01-31 10:46:08

回答

2

一个愚蠢的猜测。

哪位用户正在运行apache?

我知道网站其他部分的工作原理很奇怪,但仔细检查你的sqlite数据库是否可以访问并且可以从Apache运行的用户读写?

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

这将这样的伎俩(用户设置到Apache)