2011-01-31 54 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)